无法在VS2017中使用Microsoft.Build.Evaluation

时间:2018-02-13 16:15:57

标签: c# asp.net visual-studio msbuild

我使用VS2015构建了一个Web Forms网站,用户Microsoft.Build.Evaluation 这样我就可以在语法上浏览我项目中的文件。 使用VS2017时出现此错误:

  

Microsoft.Build.Exceptions.InvalidProjectFileException:'已导入   project" C:\ Program Files   (86)\的MSBuild \微软\ VisualStudio的\ V15.0 \ web应用\ Microsoft.WebApplication.targets"   没找到。确认声明中的路径是   正确,并且该文件存在于磁盘上。   C:\ Users \用户MYUSER \来源\工作区\ MyProject的   TFVC2 \ Gemstar的\ MyProject.csproj'

这是我的代码:

using Microsoft.Build.Evaluation;

Project project = new Project();
if (ProjectCollection.GlobalProjectCollection.GetLoadedProjects(mPath + "MyProject.csproj").Count == 0)
{
    project = new Project(mPath + "MyProject.csproj");
}
else
{
    project = ProjectCollection.GlobalProjectCollection.GetLoadedProjects(mPath + "MyProject.csproj").FirstOrDefault();
}

我想提一下,我从https://www.visualstudio.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15

安装了VS2017的BuildTools

3 个答案:

答案 0 :(得分:2)

Mac OS-
我通过安装最新版本的Mono解决了该问题。

  1. 在macOS上安装Mono。
  2. 在设置中搜索“ omnisharp”(命令+',')。
  3. 更改了设置 Omnisharp:使用Global Mono 来始终
  4. 重新加载vscode。

答案 1 :(得分:1)

  

无法在VS2017中使用Microsoft.Build.Evaluation

似乎在MSBuildExtensionsPath32中设置Microsoft.Build.Evaluation的旧值。

根据错误信息:

  

导入的项目" C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ WebApplications \ Microsoft.WebApplication.targets"   没找到。

Microsoft.WebApplication.targets的导入路径不正确。

在项目文件.csproj中,我们注意到以下导入:

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

因此MSBuildExtensionsPath32C:\Program Files (x86)\MSBuild的值为Microsoft.Build.Evaluation,这对于Visual Studio 2017来说是不正确的。

Visual Studio 2017的MSBuildExtensionsPath32值应为:

BuildTool已安装:

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0

Visual Studio已安装:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0

要解决此问题,您可以在项目文件中修改该值:

<PropertyGroup>
    <MSBuildExtensionsPath32>C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0</MSBuildExtensionsPath32>
  </PropertyGroup>

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

有关详细信息,请参阅similar issue

希望这有帮助。

答案 2 :(得分:0)