使用 Cake build 构建 Net Framework Web 应用程序引用网络标准库

Build Net Framework web application referencing net-standard library with Cake build

我有两个项目:NET Standard class 库和常规 NET Framework Web 应用程序。 Web 应用程序引用 class 库。

我用Visual Studio 2017 Preview.

当我尝试使用 MSBuild 命令通过 Cake 构建解决方案时,我收到了不受支持的项目消息:

error MSB4041: The default XML namespace of the project must be the MSBuild XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the <Project> element. If the project has been authored in the old 1.0 or 1.2 format, please convert it to MS Build 2003 format.

如果我尝试使用 DotNetCoreBuild 我得到:

error MSB4019: The imported project "C:\Program Files\dotnet\sdk.0.2-vspre-006949\Microsoft\VisualStu dio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

但是 Visual Studio 成功构建了解决方案。

最新的 MSBuild 版本具有构建 NET Standard 库的目标。问题出在Visual Studio Preview安装路径:Cake找不到最新的MSBuild.

如果您尝试在 MSBuildToolVersion 中指定 VS2017,它也会失败。

您必须手动指定 MSBuild 可执行文件才能使其与 VS Preview 一起使用。

string msBuildPath = @"c:\Program Files (x86)\Microsoft Visual Studio\Preview\Professional\MSBuild.0\Bin\MSBuild.exe";

MSBuild("../NetStdExample.sln", new MSBuildSettings {
    Verbosity = Verbosity.Minimal,
    ToolPath = msBuildPath
});

@Gary Ewan Park 更新:tool 用于确定最新的 VS 安装。