MSBuildWorkspace.Create() throws exception

后端 未结 2 2010
面向向阳花
面向向阳花 2020-12-15 19:51

I have Visual Studio 2013. I also have installed MSBuild Tools 2013. The following code gives me exception

var workspace=MSBuildWorkspace.Create();


        
相关标签:
2条回答
  • 2020-12-15 20:05

    You need to install the BuildTools for Visual Studio 2015.

    0 讨论(0)
  • 2020-12-15 20:18

    You could compile Roslyn against an older version of MSBuild to avoid this problem. I've done this with VS 2012:

    Src/Workspaces/Core/Workspaces.csproj
    -    <Reference Include="Microsoft.Build, Version=$(VisualStudioReferenceAssemblyVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    -    <Reference Include="Microsoft.Build.Framework, Version=$(VisualStudioReferenceAssemblyVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    +    <Reference Include="Microsoft.Build" />
    +    <Reference Include="Microsoft.Build.Framework" />
    
    Src/Workspaces/CSharp/CSharpWorkspace.csproj
    -    <Reference Include="Microsoft.Build, Version=$(VisualStudioReferenceAssemblyVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    -    <Reference Include="Microsoft.Build.Framework, Version=$(VisualStudioReferenceAssemblyVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    -    <Reference Include="Microsoft.Build.Tasks.$(MSBuildAssemblyNameFragment), Version=$(VisualStudioReferenceAssemblyVersion), Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    +    <Reference Include="Microsoft.Build" />
    +    <Reference Include="Microsoft.Build.Framework" />
    +    <Reference Include="Microsoft.Build.Tasks.v4.0" />
    

    Basically I strip the strong name (note that the name of the Tasks assembly is different though) so it picks up the MSBuild from the GAC which comes with the .NET Framework, which for me is the version VS 2012 used.

    0 讨论(0)
提交回复
热议问题