为什么MVVM Light会将系统程序集复制到应用程序文件夹中?

11
将MVVM Light引用添加到WPF项目中会在相应的MSI安装程序项目的依赖项列表中添加大量系统程序集。这些程序集(超过50个)在应用程序安装时将被复制到应用程序文件夹中。为什么会这样?为什么不能直接从GAC引用它?
注意:MVVMLight.dll的“复制本地”选项设置为True。我显然不能将其设置为False。
重现它非常简单。我正在使用VS2015 Community。
1. 创建一个新的WPF应用程序项目。 2. 添加对MVVM Light的NuGet引用(或Lib-only版本;无所谓)。 3. 将MSI安装程序项目添加到解决方案中(必须安装extension)。 4. 将WPF应用程序的主要项目输出添加到安装程序项目中。
这就是了。一长串System.X.Y将被添加到列表中。如果您构建并安装安装程序项目,您将在Program Files文件夹中看到所有这些DLL。
为什么?如何解决?
更新
如果WPF应用程序的目标是.NET Framework 4.0,并在此之后添加NuGet引用,则该问题不会出现。但是,如果您的目标是.NET 4.5、4.5.1或4.6,则长列表的依赖项会再次出现。认为MVVM Light(或NuGet)在查找正确的包子文件夹时存在问题。

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Buda Florin
@BudaFlorin:直接通过NuGet安装。没有什么特别的。我正在使用VS2015社区版。还要注意,这只发生在设置项目(MSI)中,而不是主项目本身的bin目录中。 - dotNET
如果有人能够确认他们可以重现它,我会非常感激。 - dotNET
2个回答

0

过于激进的依赖扫描是我不使用Visual Studio部署项目的众多原因之一。相反,我使用WiX / IsWiX。两者都是开源的,后者是我自己编写的。

更多信息请参见:

http://www.github.com/iswix-llc/iswix-tutorials


0

我不知道为什么会发生这种情况,但我可以提供一种解决方法。只需打开项目的检测到的依赖项文件夹,选择所有系统dll文件,右键单击并选择“排除”。


感谢您的输入。这可能是我尝试所有方法后的最后一招。我不想使用这种方法的部分原因是它可能无法在用户的计算机上找到适当的程序集,就像在开发计算机上未能将其定位一样。 - dotNET
曾经有过这样的经历...你将文件提交到源代码控制并通过CI/CD管道运行,突然它会随机检测到各种其他东西并再次包含它们,因为你没有排除那些文件...相信我...不值得这样做,而且充满风险。 - Christopher Painter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接