不迁移至SDK风格项目时启用packages.lock.json的NuGet包还原及解决方案级配置可行性问询
问题1:无需迁移至SDK风格项目,启用NuGet包还原使用packages.lock.json的方案
当然可以不用迁移到SDK风格项目就能使用packages.lock.json,不过你提到的环境条件必须满足:
- NuGet.exe版本4.9及以上
- Visual Studio 2017版本15.9及以上
- .NET SDK版本2.1.500及以上
具体操作步骤如下:
- 打开你的非SDK风格项目的
.csproj文件(比如传统.NET Framework项目文件) - 在项目文件的
<PropertyGroup>节点中添加以下属性:<RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> - 保存项目文件后,执行NuGet还原操作——可以在Visual Studio里右键项目选择「还原NuGet包」,或者在命令行运行
nuget restore YourProject.csproj - 还原完成后,项目目录下会自动生成
packages.lock.json文件,记得把这个文件提交到版本控制系统,这样后续还原操作会严格按照锁定的包版本执行
如果需要更严格的锁定模式(禁止还原时更新包版本),可以额外添加<LockFileMode>explicit</LockFileMode>属性到<PropertyGroup>中。
问题2:解决方案级别启用该功能
完全可以在解决方案级别统一启用packages.lock.json生成,不用逐个项目配置,推荐两种常用方式:
方式一:通过NuGet.config配置
- 在解决方案根目录下找到(没有的话就新建)
NuGet.config文件 - 在
<configuration>节点内的<config>部分添加以下配置:
这个配置会对解决方案下的所有项目生效,包括非SDK风格项目。<config> <add key="restorePackagesWithLockFile" value="true" /> </config>
方式二:通过Directory.Build.props配置
- 在解决方案根目录下新建
Directory.Build.props文件 - 在文件中添加以下内容:
所有子项目会自动继承这个属性配置,如果你有个别项目不需要启用该功能,只需在对应项目的<Project> <PropertyGroup> <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile> <!-- 可选:添加严格锁定模式 --> <!-- <LockFileMode>explicit</LockFileMode> --> </PropertyGroup> </Project>.csproj文件中添加<RestorePackagesWithLockFile>false</RestorePackagesWithLockFile>来覆盖即可。
内容的提问来源于stack exchange,提问作者Mselmi Ali
相关产品推荐
相关产品推荐

