C# .NET正在部署project不使用但引用的DLL需要的DLL

C# .NET正在部署project不使用但引用的DLL需要的DLL,c#,dll,reference,C#,Dll,Reference,所以问题很简单:我的项目引用程序集X而不是Z。但是程序集X确实引用程序集Z。程序集Z的更新有点频繁,所以每当我构建我的项目时,我也想获得最新版本的Z 到目前为止,我提出了3种选择: 参考程序集Z。这样做的好处是始终获得新版本。但它确实污染了引用,因为引用中没有严格要求 添加一个生成后事件,该事件从更新所需DLL的位置复制这些DLL。我认为这是很好的,直到我需要多个不同的DLL,这将使脚本相当长和乏味的维护 将程序集Z添加为资源,并将copy to output设置为true。我可能更喜欢这个,除

所以问题很简单:我的项目引用程序集X而不是Z。但是程序集X确实引用程序集Z。程序集Z的更新有点频繁,所以每当我构建我的项目时,我也想获得最新版本的Z

到目前为止,我提出了3种选择:

  • 参考程序集Z。这样做的好处是始终获得新版本。但它确实污染了引用,因为引用中没有严格要求
  • 添加一个生成后事件,该事件从更新所需DLL的位置复制这些DLL。我认为这是很好的,直到我需要多个不同的DLL,这将使脚本相当长和乏味的维护
  • 将程序集Z添加为资源,并将copy to output设置为true。我可能更喜欢这个,除了当我将DLL添加到项目中时,VisualStudio实际上会将(当时的)当前版本复制到项目中,并且没有指向原始源的链接。因此,当程序集被更新时,这不会以任何方式反映在我的项目中。除非我将此方法与选项2结合使用,否则我最好只使用选项2

  • 那么,我是否遗漏了什么,或者这些是我唯一的选择?

    我会选择选项1。我认为您的项目引用它所依赖的一切是完全合理的,即使这些依赖有时是间接的

    对我来说,这似乎也是最简单的选择——而且它符合Visual Studio对应用程序所需的代码依赖关系的看法。。。所以VisualStudio对这些依赖项所做的任何事情都应该自然地流动,而不是在每个阶段都要考虑这一点


    编辑:作为替代选项,您是否考虑过使用?那样的话,你只能在你的项目的NuGet依赖项中表达对X的依赖,但它会“知道”它依赖于Z。我相信它应该都能工作。。。即使这些是内部项目,您也应该能够这样做,因为您可以设置自己的NuGet源代码,而不是公共存储库。

    谢谢,是的,我也有点喜欢选项1。尽管NuGet将是一个有趣的选择。我自己从来没有在上面部署过任何东西,但我认为这会成为一个有趣的测试用例。