错误 MSB4057:名为 MVCWebUIComponent.csproj 的项目文件中不存在目标“Package”

ZMA*_*MAX 5 c# msbuild visual-studio

我有一个文件名MVCWebUIComponent.csproj,并将以下几行添加到我的文件中

   <PropertyGroup>
        <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
        <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup>

    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
Run Code Online (Sandbox Code Playgroud)

但它不会将目标包 v10.0 导入到此路径中

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio

。我有 v9.0 文件夹,但我需要将包 v10.0 导入到我的 Visual Studio 2017 中。我该怎么办?

Leo*_*SFT 3

我有 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
Run Code Online (Sandbox Code Playgroud)

所以它不会将目标包 v10.0 导入到 path 中C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio

此外,导入命令:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
Run Code Online (Sandbox Code Playgroud)

是原始行的关闭版本 ( 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" />
Run Code Online (Sandbox Code Playgroud)

导入命令<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" />
Run Code Online (Sandbox Code Playgroud)

注意:由于您有 v9.0 文件夹,因此您应该从其他计算机复​​制 v10.0。