Visual Studio 2022不会使用PackageReference还原.NetFramework的nuget包

wmvff8tz  于 2023-11-20  发布在  .NET
关注(0)|答案(1)|浏览(255)

我使用VS 2022中的工具将.NetFramework项目转换为使用PackageReference而不是packages.xml。
升级工作正常,但我不能让VS 2022自动恢复软件包。每次我做一个干净的构建,即删除obj/文件夹中的资产文件,我需要手动运行nuget restore或项目将无法编译。
一旦资产文件“project.asset.json”出现,项目就会编译并正常工作。
有没有办法解决这个问题?
什么msbuild任务应该创建资产文件?在详细的日志中,我只在以下位置看到对它的引用:
由于条件为假,跳过了目标“ResolveNuGetPackageAssets”;(“$(ResolveNuGetPackages)”==“true”and exists(“$(ProjectLockFile)”)的计算结果为(“true”==“true”and exists(“obj\project.assets.json”))。

6ss1mwsb

6ss1mwsb1#

在一些令人困惑的文档中发现了问题。
NuGet.config中有两个设置

<packageRestore>
  <add key="enabled" value="True" />
  <add key="automatic" value="False" />
</packageRestore>

字符串
documentation说:

**enabled:**表示NuGet是否可以自动恢复的布尔值。您也可以将EnableNuGetPackageRestore环境变量设置为True,而不是在配置文件中设置此键。
**automatic:**一个布尔值,指示NuGet是否应该在构建过程中检查缺少的包。

我解释说,as enabled=true会自动执行nuget恢复,但这不是它的工作方式。对于.NetFramework项目,这两个设置都必须为true。SDK项目使用automatic=false可以正常工作。也许dotnet restore会忽略此nuget设置。
(我不知道“enable”实际上是什么,也不知道“missing packages”在这里是什么意思)
我的猜测是,我可能会设置自动为假自己在一个点时,我是离线的,并假定它不会尝试在线来源

相关问题