**我是一名训练有素的学生,对C#的经验很少。 我们公司正在使用T4模板(C#VS2010)开发解决方案。 生成的文件无法在MSBuild下编译,因为它依赖于VS. 我的任务是找到一个工具或库或.dll文件或SDK或任何可以在构建时间内替换VS的东西。其他明智的我必须将生成的代码修改为VS独立我的selef,我认为这对我来说是一项艰巨的任务。 代码samble:
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;
}
我很感激你的帮助。**
答案 0 :(得分:1)
限制
生成的文件无法在MSBuild下编译,因为它是VS依赖的
看起来很奇怪。为什么要定位.NET环境但希望您的构建环境与MS无关?当然,你至少需要一个C#编译器。
如果您真的想要使用除MSBuild之外的其他内容,还有许多其他选择,例如Mono Microsoft.Build甚至Make for Windows。
答案 1 :(得分:0)
MSBuild基本上是NMake的托管和高度可扩展版本,因此不依赖于VS!但它依赖于.NET。
因此,您应该能够使用MSBuild来协调您需要的一切。
即使是C#编译器也是.NET运行时的一部分,因此您甚至可以在不产生VS依赖性的情况下构建C#目标。