gpt4 book ai didi

c# - 为运行时或编译时引用所有必需的程序集?

转载 作者:行者123 更新时间:2023-11-30 17:45:14 25 4
gpt4 key购买 nike

我以为这个问题已经被问过很多次了,但我找不到。

我们正在开发应用程序,并且有多个共享程序集供多个目标使用。当我创建一个新的应用程序时,我可能会使用这样的程序集(例如框架)并在我的项目中引用它。这里一切都很好。但是,当此框架程序集使用例如模型程序集时,我不会被 Visual Studio 强制引用它。只要我的代码不涉及任何模型类型,它就可以在没有引用的情况下正常编译。

在运行时,它确实需要模型程序集。当发布这个应用程序时没有问题,因为我只是在我的安装程序项目中包含了所有必需的引用。

当我尝试调试 应用程序时,问题出现了。 bin 文件夹将没有模型程序集,因为它未被引用。

问题
是否有解决这种“引用引用”情况的最佳做法?

我们提出的解决方案

添加模型作为引用
这感觉不对,我们污染了项目

在解决方案中包含模型项目并添加为项目引用
这感觉更糟(污染溶液)

添加构建后步骤
可能是一个解决方案,但也感觉不对。

最佳答案

最好的解决方案是用 NuGet 打包您的 FrameworkLibrary 程序集(或集) .然后,您可以在 Visual Studio 中使用 NuGet 来处理所有这些引用。这非常有效,即使在使用嵌套依赖项时也是如此。

NuGet 得到完全支持并集成到 Visual Studio 中。托管您自己的包存储库非常容易(就像指向与包共享的文件一样简单)。

您可以为您自己的(内部)包托管一个私有(private)的现场存储库。大多数商店都是这样做的。您可以将它与一个或多个公共(public) NuGet 存储库结合起来,用于公共(public)事物,如 Log4Net 等。

虽然启动和运行它似乎需要一些时间(这是相对的,请尝试先使用公共(public)包以先掌握使用 NuGet 的窍门),但您可以获得很多好处,因为出色地。例如,您可以获得开箱即用的库版本控制支持。

在我的公司,我们多年来一直遇到这个问题,我们过去常常构建库程序集(50 多个)并将其 checkin 到源代码管理中,然后将其拖到各个分支中。由于我们已经切换到使用 NuGet 的方法,这个问题对我们来说就消失了。再也不会回头看了。

关于c# - 为运行时或编译时引用所有必需的程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28110053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com