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

Wpf 为什么MVVM Light会将系统程序集复制到应用程序文件夹?,wpf,visual-studio,windows-installer,mvvm-light,Wpf,Visual Studio,Windows Installer,Mvvm Light,将MVVM Light引用添加到WPF项目会将大量系统程序集添加到附带的MSI安装项目中的依赖项列表中。安装应用程序时,这些程序集(数量超过50个)将被复制到应用程序文件夹中。为什么会这样?为什么不能直接从广汽传来 注意:Copy Local选项对于MVVMLight.dll设置为True。我显然不能把它设为False 复制它非常简单。我正在使用VS2015社区 创建一个新的WPF应用程序项目 将NuGet引用添加到MVVM Light(或仅Lib版本;无所谓) 将MSI安装项目添加到解决方案中

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

注意:Copy Local选项对于MVVMLight.dll设置为True。我显然不能把它设为False

复制它非常简单。我正在使用VS2015社区

  • 创建一个新的WPF应用程序项目
  • 将NuGet引用添加到MVVM Light(或仅Lib版本;无所谓)
  • 将MSI安装项目添加到解决方案中(必须已安装)
  • 将WPF应用程序的主项目输出添加到安装项目
  • 好了。将向列表中添加一长串System.X.Y。如果您构建并安装安装项目,您将在ProgramFiles文件夹中看到所有这些DLL

    为什么??如何修复它

    更新
    如果WPF应用程序以.NETFramework4.0为目标,然后添加NuGet引用,则不会出现此问题。但是,如果您以.NET 4.5、4.5.1或4.6为目标,则会再次出现一长串依赖项。认为MVVM Light(或NuGet)在查找正确的包子文件夹时遇到问题。

    我不知道为什么会发生这种情况,但我可以提供一种解决方法。只需打开项目的Detected Dependencies文件夹,选择所有系统DLL,右键单击并选择Exclude。

    过度的依赖项扫描是我不使用Visual Studio部署项目的众多原因之一。相反,我使用WiX/IsWiX。开源的和后来我自己写的

    有关更多信息,请参阅:


    我有一个针对4.5的应用程序,Galasoft.MVVMLight为我添加了大约4-5个DLL。如何将其添加到项目中?@BudaFlorin:直接通过nuget。没什么特别的。我正在使用VS2015社区以防万一。另外请注意,这只发生在安装项目(MSI)中,而不是主项目本身的bin目录中。如果有人能确认他们可以复制它,我将不胜感激。谢谢您的输入。这可能是在其他一切都失败后我最不愿意做的事情了。我不愿意使用这种方法的一部分原因是,它可能无法在用户机器上的GAC中找到合适的程序集,就像它无法在开发机器上定位它们一样。。。您将文件提交到源代码管理并通过CI/CD管道运行,突然它会随机检测到所有其他内容并再次包含它,因为您没有排除这些文件。。。相信我。。不值得努力,充满风险。