visual-studio-2015 - 使用 Microsoft.Build (Visual Studio SDK) 编译 C# 6 时出错

标签 visual-studio-2015 msbuild c#-6.0 visual-studio-sdk microsoft.build

这是一个有效的 C#6 测试代码。在VS2015上编译

namespace testcode
{
    class Program
    {
        static void Main(string[] args)
        {
            string x = null ;
            string y = x?.Substring(0, 2);
            return;
        }       
    }
}

cproj 的工具版本 14.0

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

这就是我尝试通过 Visual Studio SDK 使用 MSBUILD 编译它的方式

//References Microsoft.Build and Microsoft.Build.Framework
namespace MSBuildTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var pc = new Microsoft.Build.Evaluation.ProjectCollection(Microsoft.Build.Evaluation.ToolsetDefinitionLocations.Registry);
            pc.DefaultToolsVersion = "14.0";
            pc.RegisterLogger(new Microsoft.Build.Logging.ConsoleLogger(Microsoft.Build.Framework.LoggerVerbosity.Detailed));
            var pr = pc.LoadProject(@"C:\path\to\testcode.cproj");
            pr.Build();
        }
    }
}

这是错误消息

Program.cs(8,26): error CS1525: Invalid expression term '.'
Program.cs(8,27): error CS1003: Syntax error, ':' expected
    0 Warning(s)
    2 Error(s)

我猜它使用了错误的 MSBUILD 可执行文件,但我找不到强制 MSBUILD bin 路径的方法。

最佳答案

要解决此问题,请尝试以下设置:

对于遇到此错误的其他人,请不要使用位于以下位置的 msbuild: C:\Windows\Microsoft.NET\Framework64\v4.0.30319

请使用以下位置的 msbuild: C:\Program Files (x86)\MSBuild\14.0\Bin

关于visual-studio-2015 - 使用 Microsoft.Build (Visual Studio SDK) 编译 C# 6 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38905908/

相关文章:

c# - 为什么在c#.NET中 "Enum"编译成功, "enum"编译失败?

c++ - 附加控制台 I/O 的 Visual Studio 2015 问题

powershell - 如何使用 Powershell 将 .Net Web 应用程序部署到 Azure

c# - 添加 C++ 项目时出现 CS1705 错误解决方案

c# - 猫王运算符 ?.奇怪的是在明显的情况下无法编译

c# - 一个对象如何同时为 null 和不为 null?

javascript - 调试器在 Visual Studio 中不工作

c++ - 无法启动程序: Access denied

c# - 更新到 Ranorex 9.1 后无法构建解决方案

c# - 配置 SonarQube 以识别 C# 6.0 语法