我有 v9.0 文件夹,但我需要将包 v10.0 导入我的 Visual Studio 2017。我该怎么办?
不确定为什么要将包 v10.0 导入 Visual Studio 2017。由于要将其导入 Visual Studio 2017,$(MSBuildExtensionsPath32) 的值应该是相对于 MSBuild 目录的新位置:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild
所以它不会将目标包 v10.0 导入路径C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio。
另外,导入命令:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
是原始行的关闭版本 (Condition="false"),它允许 Visual Studio 仍将您的项目视为有效的 Web 应用程序项目(这就是 VS 的技巧2010 SP1 自己做)。因此,一般情况下,v10.0 包是不会被导入的。
您可以创建一个Web应用程序项目,检查项目文件,您会发现以下代码:
<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" />
导入命令<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />是实际导入,(Condition="false")时会导入最新行。
如果您坚持将 v10.0 包导入我的 Visual Studio 2017,您只需在 csproj 中添加一些内容即可重定向 MSBuildExtensionsPath:
<PropertyGroup>
<MSBuildExtensionsPath32>C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio</MSBuildExtensionsPath32>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath32)\v10.0\WebApplications\Microsoft.WebApplication.targets" />
注意:由于你有v9.0文件夹,你应该从其他机器复制v10.0。