我使用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答案 0 :(得分:2)
Mac OS-
我通过安装最新版本的Mono解决了该问题。
答案 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)' != ''" />
因此MSBuildExtensionsPath32
中C:\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)