跳过项目“SetupWix.wixproj”的恢复。项目文件可能无效或缺少恢复所需的目标 (NU1503)

Sim*_*mon 11 msbuild wix nuget-package-restore wix3.9

我们使用 Wixtoolset V3.9 来构建我们的设置。我们使用以下命令来开始构建:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" /restore /t:Rebuild /p:Configuration=Release /p:Platform=x64 MySolution.sln /p:BabelEnabled=true
Run Code Online (Sandbox Code Playgroud)

我们需要该参数/restore来恢复构建服务器上的 nuget-packages。由于我们通过 MSBUILD 16 构建 Wix-Setup,我们收到以下警告:

Skipping restore for project 'SetupWix.wixproj'. The project file may be invalid or missing targets required for restore.
Run Code Online (Sandbox Code Playgroud)

该警告属于类别NU1503(无论这意味着什么)。我们找不到解决甚至抑制这个警告的方法。我们尝试通过将代码 NU1503 添加到项目属性来抑制它:

在此输入图像描述

无论什么原因,警告仍然出现。

问题:我们如何解决或抑制这个警告?

m0s*_*0sa 11

长话短说

NU1503您可以通过将其包含在您的.proj/文件中来摆脱它msbuild

  <!-- prevents NU1503 -->
  <Target Name="_IsProjectRestoreSupported"
          Returns="@(_ValidProjectsForRestore)">
    <ItemGroup>
      <_ValidProjectsForRestore Include="$(MSBuildProjectFullPath)" />
    </ItemGroup>
  </Target>
  <Target Name="Restore" />
Run Code Online (Sandbox Code Playgroud)

来源: https: //github.com/NuGet/NuGet.Client/blob/537630019c99fdc7bed1b3dfdade72fc3e31692f/src/NuGet.Core/NuGet.Build.Tasks/NuGet.targets#L1286-L1298


详细解释

我通过使用很棒的MSBuild 二进制日志文件查看器msbuild.binlog工具检查文件来解决这个问题。dotnet restore /bl

  1. 该警告是由以下内容生成的WarnForInvalidProjectTask在此输入图像描述

  2. _FilterRestoreGraphProjectInputItems...由目标生成...

  3. ...它调用一个_IsProjectRestoreSupportedtarget,如果有的话。 在此输入图像描述