msbuild 找不到 project.assets.json

Tom*_*ing 6 c# msbuild asp.net-core

我有一个 ASP.NET Core 应用程序,我希望使用 MSBuild 15 在 jenkins 机器上构建它。

当我尝试构建时,出现以下错误:

C:\Program Files\dotnet\sdk\2.1.502\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(198, 5): error NETSDK1004: Assets file 'C:\sync\Src\Util\未找到 myUtil\ob j\project.assets.json'。运行 NuGet 包还原以生成此文件

我知道我需要以某种方式进行 nuget restore,但我未能使其正常工作。

我的构建过程:使用以下命令运行批处理:

call "%VS150COMNTOOLS%VsDevCmd.bat"
MSBuild DailyBuild.proj /t:DailyBuild /p:VersionNumber=%2 /l:FileLogger,Microsoft.Build.Engine;logfile=Build.log
Run Code Online (Sandbox Code Playgroud)

DailyBuild.proj 文件如下所示:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <SourcesPath>$(MSBuildProjectDirectory)\..\..\</SourcesPath>
    <CSCleanProperties>BuildType=Clean;Configuration=Release;IsFormalBuild=true</CSCleanProperties>
    <CSBuildProperties>BuildType=ReBuild;Configuration=Release;PauseBuildOnError=false;PublishWebSites=true;VersionName=myProd-$(VersionNumber)</CSBuildProperties>
  </PropertyGroup>

  <Target Name="DailyBuildWithClean">
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Targets="Clean" Properties="$(CSCleanProperties)"/>
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Properties="$(CSCleanProperties)"/>
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Targets="FormalBuild" Properties="$(CSBuildProperties)"/>
  </Target>

  <Target Name="DailyBuild">
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make.proj" Targets="SW;PreparePackFolder" Properties="$(CSBuildProperties)"/>
  </Target>

</Project>
Run Code Online (Sandbox Code Playgroud)

Make.proj 是一个 proj 文件,其中包含要构建的许多应用程序的定义,其中之一是我的 ASP.NET Core 应用程序。

我该如何解决这个问题?谢谢你。

解决方案编辑:感谢 Martin Ullrich 的解决方案:

在 DailyBuild.proj 中添加了目标 Restore,还在 Make.proj 中添加了一个名为 restore 的目标,如建议(IE:

<Target Name="Restore">
  <MSBuild Projects="$(SourcesPath)\my.sln" Targets="Restore" />
</Target>
Run Code Online (Sandbox Code Playgroud)

)

Mar*_*ich 10

-r( -restore/ /Restore)添加到您的 MSBuild 命令以在主构建之前触发还原。

restore 参数将构建Restore目标,清除内部缓存,然后按照指定运行构建的其余部分。

由于您构建了一个自定义 MSBuild 项目,因此您需要向其添加一个Restore目标:

<Target Name="Restore">
  <MSBuild Projects="$(SourcesPath)\my.sln" Targets="Restore" />
</Target>
Run Code Online (Sandbox Code Playgroud)

(或者Restore在 make.proj 文件上添加另一个目标,然后将其从那里转发到您需要恢复的解决方案或单个项目)