C# 4.0 是否有任何MSBuild替代方案?

C# 4.0 是否有任何MSBuild替代方案?,c#-4.0,C# 4.0,**我是一名接受过培训的学生,在C#方面的经验很少。 我们公司正在开发使用T4模板(C#VS2010)的解决方案。 生成的文件无法在MSBuild下编译,因为它依赖于VS。 我的任务是找到一个工具、一个库、一个.dll文件、SDK或任何可以在构建时替换VS的东西。另一方面,我必须修改生成的代码,使之独立于我的selef,我认为这对我来说是一个困难的任务。 代码sample: Project GetProjectContainingT4File(DTE dte) { // Find the .t

**我是一名接受过培训的学生,在C#方面的经验很少。 我们公司正在开发使用T4模板(C#VS2010)的解决方案。 生成的文件无法在MSBuild下编译,因为它依赖于VS。 我的任务是找到一个工具、一个库、一个.dll文件、SDK或任何可以在构建时替换VS的东西。另一方面,我必须修改生成的代码,使之独立于我的selef,我认为这对我来说是一个困难的任务。 代码sample:

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;

}
非常感谢您的帮助。**

限制

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

看起来很奇怪。为什么您的目标是.NET环境,但希望您的构建环境与MS无关?当然,你至少需要一个C#编译器


如果您真的想使用MSBuild之外的东西,有许多替代方法,例如Mono或甚至。

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

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


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

您能否详细说明为什么不能使用MSBuild构建它?即使存在MSBuild无法生成的内容,也可以使用MSBuild调用Visual Studio来生成它。您只需使用Exec任务并调用devenv.exe。他们使用服务器编译未安装VS的项目。您不需要安装VS即可使用msbuild。您也不需要VS来转换T4模板。参见关键短语:“VS”依赖。不依赖MS。例如,如果要在CI服务器上编译某些内容,则不能在每台服务器上都要求安装VS。太贵了。