4

**私は C# の経験がほとんどないトレーニング中の学生です。当社では、T4 テンプレート (C# VS2010) を使用したソリューションを開発しています。生成されたファイルは、VS 依存であるため、MSBuild でコンパイルできません。私の仕事は、ツール、ライブラリ、.dll ファイル、SDK、またはビルド時に VS を置き換えることができるものを見つけることです。それ以外の場合は、生成されたコードを VS に依存しないように変更する必要があります。これは、私にとって難しい作業だと思います。コードサンプル:

Project GetProjectContainingT4File(DTE dte) {

// Find the .tt file's ProjectItem

ProjectItem projectItem = dte.Solution.FindProjectItem(Host.TemplateFile);

// If the .tt file is not opened, open it

if (projectItem.Document == null)

    projectItem.Open(Constants.vsViewKindCode);

if (AlwaysKeepTemplateDirty) {

    // Mark the .tt file as unsaved. This way it will be saved and update itself next time the

    // project is built. Basically, it keeps marking itself as unsaved to make the next build work.

    // Note: this is certainly hacky, but is the best I could come up with so far.

    projectItem.Document.Saved = false;

}

return projectItem.ContainingProject;

}

私はあなたの助けに感謝します.**

4

2 に答える 2

1

制限

生成されたファイルはVSに依存しているため、MSBuildでコンパイルできません

非常に奇妙に思えます。なぜ.NET環境をターゲットにしているのに、ビルド環境をMSに依存させたくないのですか?確かに、少なくともC#コンパイラが必要です。

本当にMSBuild以外のものを使用したい場合は、MonoのMicrosoft.BuildやMakeforWindowsなどの代替手段がいくつかあります

于 2012-07-20T15:28:21.990 に答える
0

MSBuild は基本的に NMake の管理された高度に拡張可能なバージョンであり、VS に依存していません! ただし、.NET に依存します。

したがって、MSBuild を使用して、必要なものすべてを調整できるはずです。

C# コンパイラでさえ .NET ランタイムの一部であるため、VS への依存を招くことなく C# ターゲットをビルドすることもできるはずです。

于 2012-07-21T15:45:54.217 に答える