4

**我是一名正在接受培训的学生,C# 经验很少。我们公司正在开发使用 T4 模板(C# VS2010)的解决方案。生成的文件无法在 MSBuild 下编译,因为它依赖于 VS。我的任务是找到一个工具或一个库或一个 .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

限制

生成的文件无法在MSBuild下编译,因为它是VS依赖的

看起来很奇怪。为什么您会以 .NET 环境为目标,但希望您的构建环境独立于 MS?当然,您至少需要一个 C# 编译器。

如果你真的想使用 MSBuild 之外的东西,还有很多替代品,比如 Mono 的Microsoft.Build甚至Make for Windows

于 2012-07-20T15:28:21.990 回答
0

MSBuild 基本上是 NMake 的托管且高度可扩展的版本,因此不依赖于 VS!然而,它依赖于 .NET。

因此,您应该能够使用 MSBuild 来编排您需要的一切。

甚至 C# 编译器也是 .NET 运行时的一部分,因此您甚至应该能够构建 C# 目标而不会产生 VS 依赖项。

于 2012-07-21T15:45:54.217 回答