我正在编写一个webservice,调用时应构建一个C#项目。我使用框架2引用,Microsoft.Buld.Engine和Microsoft.Build.Framework。如果你看 '<导入>' 部分.csproj的文件下,默认情况下它具有:Microsoft.Build.Engine错误(默认目标):目标GetFrameworkPaths:找不到.NET Framework SDK
<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();
成功变量返回false,因为构建faild。然后我检查build.log文件,这是我收到的错误:
构建开始3/17/2010上午11时16分56秒 项目 “[Path_Of_Directory] \ ProjectName.csproj” (默认目标):目标 GetFrameworkPaths:找不到 .NET Framework SDK。任务是 正在寻找通向.NET Framework SDK的路径,位置 在注册表项 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework的值中指定。 通过执行以下操作之一,您可能能够解决问题 :1.) 安装.NET Framework SDK。 2.) 手动将上述注册表项设置为 正确的位置。目标
我不明白为什么它不会建立。任何帮助都感激不尽。由于
你究竟有什么不明白的?错误消息告诉你到底要检查什么。是你做的吗? – TomTom 2010-03-17 09:23:34
是的,注册表值是“C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727”,这与我通过的bin路径完全相同,因此我的困境 – 2010-03-17 09:30:15