首页 > 解决方案 > 使 dotnet publish 使用来自 bin 文件夹而不是来自 nuget 缓存的依赖项

问题描述

在我的 CI 中,我在不同阶段构建和发布 .net 应用程序。

在构建阶段,我dotnet build会创建obj和创建bin文件夹。然后我将这两个文件夹传递给发布阶段并运行dotnet publish -o pub --no-build,但 msbuild 尝试从 nuget 缓存文件夹 ( .nuget/packages) 而不是从bin.

有没有办法dotnet publish使用bin文件夹中的依赖项?我不想.nuget从第一阶段传递整个文件夹,因为所有依赖项都已经存储在里面bin了。

标签: c#.netmsbuilddotnet-cli

解决方案


我可以问一下为什么默认情况下需要显式dotnet build何时在dotnet publish幕后构建?也许可以帮助?

如果包缓存的一致性是目标,另一种方法是显式执行dotnet restore(甚至可能到代理临时文件夹),然后在两者中使用该包缓存dotnet builddotnet restore.

dotnet restore app\app.csproj
dotnet build app\app.csproj --no-restore
dotnet publish app\app.csproj -o pub --no-restore

推荐阅读