【发布时间】:2016-12-20 10:56:13
【问题描述】:
我想使用另一个 C# 项目构建 asp.net 核心项目。这是示例代码。 (我使用的是 Visual Studio 2015)
var projectCollection = new Microsoft.Build.Evaluation.ProjectCollection(Microsoft.Build.Evaluation.ToolsetDefinitionLocations.Registry);
projectCollection.DefaultToolsVersion = "14.0";
projectCollection.RegisterLogger(new Microsoft.Build.Logging.ConsoleLogger(Microsoft.Build.Framework.LoggerVerbosity.Detailed));
var project = projectCollection.LoadProject(@"H:\Development\WebApplication22\src\WebApplication22\WebApplication22.xproj");
bool b = project.Build();
它给了我很多错误。以下是其中之一。
“GetTransitiveNonDotNetProjectDependencies”任务无法 从程序集 C:\Program Files 加载 (x86)\MSBuild\Microsoft\VisualStudio\v14.0\DotNet\Microsoft.DotNet.Tasks.dll。 “Microsoft.DotNet.Tasks.KProcess”类型中的方法“get_BuildEngine” 从程序集'Microsoft.DotNet.Tasks,版本= 14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 没有 执行。确认申报无误, 程序集及其所有依赖项都可用,并且 任务包含一个实现的公共类 Microsoft.Build.Framework.ITask。完成构建目标 项目“WebApplication22.xproj”中的“_GetDependencyFragmentFiles”—— 失败。
注意:如果我使用 Visual Studio 命令提示符并使用 MSbuild,那么它可以正常工作。
【问题讨论】:
-
我用你的代码做了一个测试,它重现了同样的错误。我建议您可以通过编程方式调用 MSBuild 命令来构建项目。另一方面,您可以参考这个工具代码:github.com/dotnet/buildtools
标签: visual-studio-2015 msbuild asp.net-core