我正在编写一个 web 服务,调用时应该构建一个 C# 项目。我正在使用框架 2 参考,Microsoft.Buld.Engine 和 Microsoft.Build.Framework。如果您查看“<Import>”部分的 .csproj 文件,默认情况下它具有:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
然后我改为:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
我构建 csproj 的代码是:
Engine buildEngine = new Engine(Path.Combine(Environment.GetEnvironmentVariable("SystemRoot"), @"Microsoft.NET\Framework\v2.0.50727"));
FileLogger logger = new FileLogger();
logger.Parameters = @"logfile=c:\temp\build.log";
buildEngine.RegisterLogger(logger);
bool success = buildEngine.BuildProjectFile([Path_Of_Directory]+ "ProjectName.csproj");
buildEngine.UnregisterAllLoggers();
由于构建失败,success 变量返回 false。然后我检查 build.log 文件,这是我收到的错误:
构建开始于 2010 年 3 月 17 日上午 11:16:56 项目“[Path_Of_Directory]\ProjectName.csproj”(默认目标):目标 GetFrameworkPaths:找不到 .NET Framework SDK。该任务正在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework 的 SDKInstallRootv2.0 值中指定的位置查找 .NET Framework SDK 的路径。您可以通过执行以下操作之一来解决该问题: 1.) 安装 .NET Framework SDK。2.) 手动将上述注册表项设置到正确的位置。目标
我不明白为什么它不会建立。任何帮助都感激不尽。谢谢