使用Microsoft.Build编译项目:项目的默认名称空间必须是MSBuild XML名称空间

时间:2018-05-02 17:33:17

标签: c#

我尝试使用Microsoft.Build库从我的应用程序编译项目。我将用于构建的所有项目都是VS2017中的.Net 4.7.1项目。这是我遇到的代码和我收到的错误:

var loggerPath = $"C:\\temp\\{FilenameOnly}BuildLog.txt";

var collection = ProjectCollection.GlobalProjectCollection;

var logger = new FileLogger();
logger.Parameters =  $"logfile={loggerPath}";

collection.RegisterLogger(logger);

var project = collection.LoadProject(FileWithPath);
project.SetProperty("Configuration", buildConfiguration);
project.Build();

Microsoft.Build.Exceptions.InvalidProjectFileException:'项目的默认XML命名空间必须是MSBuild XML命名空间。如果项目是以MSBuild 2003格式创作的,请添加xmlns =" http://schemas.microsoft.com/developer/msbuild/2003"对元素。如果项目是以旧的1.0或1.2格式编写的,请将其转换为MSBuild 2003格式。

听起来我正在使用错误的MSBuild而且我认为我引用了错误的Microsoft.Build.x.dlls所以我尝试切换到那些 C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin 对于同样的例外。

1 个答案:

答案 0 :(得分:0)

我最终需要通过nuget包获得MSBuild 15。如果我没有偶然发现这个链接,我还会遇到一些问题,这些问题会让我寻找替代方案:

MSBuild 15: The "Error" task could not be instantiated