问题
I have a .Net Standard project in a solution and I want msbuild to build it on our build server. If I do not run "nuget restore" first, I get the error "project.assets.json' not found. Run a NuGet package restore". I already have all of the necessary NuGet packages in the "packages" folder at the solution level. I would like to indicate somehow that msbuild should just use the files in the local "packages" folder instead of trying to re-download the files. How can I do this? Thank you.
回答1:
.NET Standard projects do not use the packages
folder in the solution. This is the "old" way of referencing NuGet packages through packages.config
. The new way - PackageReference
items in the project - uses a shared global packages folder in the user's home directory. The project.assets.json
needs to be regenerated on the build machine with the resolved paths to this shared cache even if no packages need to be downloaded. In fact, a NuGet restore might not even need to hit the network if all packages are already on the machine.
回答2:
The best solution I have come up with still involves a NuGet restore, but I added the local packages folder as one of the NuGet repositories in nuget.config and now I don't have to reach out to any remote repositories. This is not quite what I wanted, but it is allowing me to progress.
<packageSources>
<add key="local" value=".\packages" />
</packageSources>
来源:https://stackoverflow.com/questions/47145704/how-can-i-use-msbuild-without-project-assets-json-or-nuget-restore