处理面向同一存储库中 .NET Framework 4.5 和 4.6.2 这两个版本的项目时出现问题



最近,我们将.NET解决方案从.NET Framework 4.5升级到4.6.2。该项目位于 Git 存储库中,我们在此存储库中有多个分支。我们将 Nuget 包重新定位到 4.6.2,这样我可以看到 Nuget 包在重建解决方案时自动恢复,这绝对没问题,而且在意料之中。现在,大多数包都有一个名为"net462"的文件夹,其中包含面向 .NET Framework 4.6.2 的包的 DLL。但是,文件夹"net45"现在为空。

问题在于,当开发人员切换到指向 .NET Framework 4.5 的旧分支时,他/她会收到与未找到引用相关的错误数。我假设是因为存在"net45"的文件夹,但其中没有程序集。

任何人都可以建议如何使两个分支(针对 4.5 和 4.6.2)在具有正确 Nuget 依赖项的同一台机器上成功构建?

对此的任何帮助将不胜感激。

谢谢

谁能建议我如何使两个分支(针对 4.5 和 4.6.2)在具有正确 Nuget 依赖项的同一台机器上成功构建?

同意 Hans 的评论"为什么net45 子目录为空,而不是标准行为并不明显。它们是手工剥离并签入源代码控制吗?Nuget 不会删除 .NET 4.5 文件夹中.dll文件。

当您切换到指向 .NET Framework 4.5 的旧分支时,属性 winodw 中的程序集路径应指向...libnet45..文件夹。Git 的默认行为不是将包文件夹添加到源代码管理中。因此,然后从旧分支生成项目,Visual Studio 将自动还原 nuget 包。还原完成后,Visual Studio可以在文件夹"net45"中找到程序集。

因此,要解决此问题,首先,您应该确保nuget 存储库中的 nuget 包包含"net45"文件夹中的程序集,然后在切换到旧分支时,检查解决方案文件夹中是否有packages文件夹,如果是,请将其删除并检查在旧分支上生成项目时是否存在 nuget 还原行为(检查输出窗口中的日志)。

希望这有帮助。

听起来面向 .NET 4.5 的分支正在获取最新版本的 NuGet 包,而不是将自己限制为支持 .NET 4.5 的 NuGet 包版本。有关如何执行此操作的示例,请参阅此答案(有关 NuGet 版本控制Microsoft文档包含有关限制版本范围的其他详细信息)。

理想情况下,将 NuGet 包更改为 .NET 4.6.2 至少是 NuGet 包的新主要版本,但只要版本不同,限制版本就有效。

相关内容

  • 没有找到相关文章

最新更新