ben*_*n92 3 installation visual-studio nuget
我使用 Microsoft Visual Studio 安装程序项目(0.9.3,这是 Visual Studio 2019 的最新版本)创建了一个安装项目。执行安装后,它会安装与构建期间生成的程序集不同的 Nuget 包程序集。
为什么要这样做以及如何使其选择与构建程序集一致的程序集?
我的应用程序适用于 4.7.2 框架。典型的例子是System.ValueTuple.dll (4.0.2)
构建从以下位置检索程序集:C:\Users\.nuget\packages\system.valuetuple\4.5.0\lib\net47\System.ValueTuple.dll
安装从以下位置检索程序集:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\Facades\System.ValueTuple.dll
虽然基于 4.0.2 的安装会产生问题但有效,但当我将 nuget 包升级到版本 4.6(并将程序集升级到 4.0.3)时,安装切换到使用程序集 C:\Users\vgdev.nuget\packages\system.valuetuple\4.5 .0\ref\net47\System.ValueTuple.dll
如果您仔细观察,您会注意到上面的路径有 \ref 文件夹,并且它包含“引用”程序集。引用程序集不应该安装,并且会导致错误 BadImageformatException。
Nuget 包升级后的构建继续从正确的 \lib 文件夹中提取包,并且应用程序工作正常。所以我想做的是让安装程序与构建一致地工作。有什么建议吗?
安装从以下位置检索程序集:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.7.2\Facades\System.ValueTuple.dll
您以哪种方式引用该包?我只能在手动添加引用时重现此问题。(右键单击项目=>添加引用=>浏览...)如果您这样做,请删除该引用,然后通过Nuget Package Manager UI添加该引用。
我的应用程序适用于 4.7.2 框架。典型的例子是System.ValueTuple.dll (4.0.2)。当我将 nuget 包升级到版本 4.6(并将程序集升级到 4.0.3)时
我在这里只能找到最新的4.5.0。我认为它包含程序集版本 4.0.3 而不是 4.0.2。
(我猜当 VS 识别你的程序集版本时,有些东西会破坏进程,因为在大多数机器上它显示 4.0.3,而在一台机器上,它显示 4.0.2,很奇怪......)
Nuget 包升级后的构建继续从正确的 \lib 文件夹中提取包,并且应用程序工作正常。所以我想做的是让安装程序与构建一致地工作。有什么建议吗?
问题原因:
这种奇怪的行为可能与安装项目有关。我可以重现相同的情况,并且我发现仅当我使用PackageReference
format 来管理应用程序中的 nuget 包时才会出现此问题。(.net 4.7.2)
PackageReference
format是VS2017之后新的nuget包管理格式。我不确定安装项目是否完全支持它。
以下是两个可能有帮助的建议:
1.我发现这个问题只有在使用PackageReference
格式时才会出现。因此,您可以尝试Packages.config
在应用程序中使用格式。我已经检查过安装项目可以很好地识别这种格式。
卸载所有PackageReference格式的包,然后去Tools=>Nuget Packages Manager=>Nuget Package Manager
设置Allow format selection...
为true。
Clean all nuget cache
并单击ok
。之后删除 bin 和 obj 文件夹,然后重新启动 VS 以使用Packages.config
format 将这些包添加回来。
2、如果继续使用PackageReference
格式化。尝试从 ref 文件夹中排除程序集,然后通过 .手动从 lib 文件夹中添加该程序集Add=>Assembly=>Browse
。
注意:由于安装项目可能不完全支持 packageReference 格式项目,实际上我认为 #1 可能更适合您的情况。您可以创建一个新的packages.config格式的简单项目来检查是否可以通过Packages.config格式解决问题。希望能帮助到你 :)
归档时间: |
|
查看次数: |
2177 次 |
最近记录: |