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

dot*_*NET 9 wpf windows-installer visual-studio mvvm-light

将MVVM Light引用添加到WPF项目会将大量系统程序集添加到随附的MSI安装项目中的依赖项列表中.然后,在安装应用程序时,会将这些程序集(数量超过50个)复制到应用程序文件夹中.为什么会这样?为什么不能直接从GAC引用它?

注意:对于MVVMLight.dll," 复制本地"选项设置为True.我显然无法将其设置为False.

再现它非常简单.我正在使用VS2015社区.

  1. 创建一个新的WPF应用程序项目.
  2. 添加对MVVM Light的NuGet引用(或者仅限Lib的版本;无关紧要).
  3. 将MSI安装项目添加到解决方案(必须安装扩展).
  4. 将WPF应用程序的主项目输出添加到安装项目.

你去吧 System.XY的长列表将添加到列表中.如果您构建并安装安装项目,您将在Program Files文件夹中看到所有这些DLL.

为什么?以及如何解决它?

更新

如果WPF应用程序以.NET Framework 4.0为目标并且您在此后添加NuGet引用,则不会出现此问题.但是,如果您以.NET 4.5,4.5.1或4.6为目标,则会再次出现很长的依赖项列表.认为MVVM Light(或NuGet)无法找到正确的包子文件夹.

Con*_*ell 0

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