Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何定位用于组件间引用的DLL_C#_.net_Dll_Reference_Modularity - Fatal编程技术网

C# 如何定位用于组件间引用的DLL

C# 如何定位用于组件间引用的DLL,c#,.net,dll,reference,modularity,C#,.net,Dll,Reference,Modularity,我的SAAS公司有两个C#.NET产品,称它们为应用程序Alpha和应用程序Beta。它们都引用了一些我们称之为Core的库 目前,代码库是单片的,使用单个.NET解决方案存储在单个SVN存储库中,我们正试图使其更加模块化/组件化。我们已将这两个应用程序和核心库拆分为单独的存储库,但现在遇到以下问题: Alpha和Beta必须引用Core,但我们试图避免直接引用代码,因为这样我们实际上又回到了原点:您需要检查并共同定位所有存储库。那么我们应该如何在这些组件之间引用程序集呢? 每个组件都可以有一个

我的SAAS公司有两个C#.NET产品,称它们为应用程序Alpha和应用程序Beta。它们都引用了一些我们称之为Core的库

目前,代码库是单片的,使用单个.NET解决方案存储在单个SVN存储库中,我们正试图使其更加模块化/组件化。我们已将这两个应用程序和核心库拆分为单独的存储库,但现在遇到以下问题:

Alpha和Beta必须引用Core,但我们试图避免直接引用代码,因为这样我们实际上又回到了原点:您需要检查并共同定位所有存储库。那么我们应该如何在这些组件之间引用程序集呢?

每个组件都可以有一个目录,其中包含需要引用的其他组件的DLL,并存储在SVN中,但这意味着在更新Core以将新的DLL推出到Alpha和Beta时需要付出额外的努力

或者我们可以将DLL存储在一个中央SVN'd位置(和/或GAC),但这意味着在更新Core时,其他人都需要付出额外的努力来获取新的DLL


还有我们忽略的第三个选项吗?

我有一个类似的选项,我有5个应用程序,使用我构建的一系列web控件。这些控件被编译成一系列用于模块化的DLL,使用它们的应用程序位于不同的服务器上

我所做的是利用VS2008的构建实用程序来执行一个批处理文件,该批处理文件在执行发布构建时将编译(更新)的DLL复制到生产服务器

要做到这一点,请转到构建到DLL(或DLL)中的项目,右键单击该项目并转到属性。然后转到“生成事件”选项卡。在这里可以看到编译前命令行和编译后命令行文本框

因此,您的发布版本可以完全自动化,您不必担心生产DLL版本之间的DLL地狱般的差异

希望这有帮助,
JP

我有一个类似的东西,我有5个应用程序,它们利用我构建的一系列web控件。这些控件被编译成一系列用于模块化的DLL,使用它们的应用程序位于不同的服务器上

我所做的是利用VS2008的构建实用程序来执行一个批处理文件,该批处理文件在执行发布构建时将编译(更新)的DLL复制到生产服务器

要做到这一点,请转到构建到DLL(或DLL)中的项目,右键单击该项目并转到属性。然后转到“生成事件”选项卡。在这里可以看到编译前命令行和编译后命令行文本框

因此,您的发布版本可以完全自动化,您不必担心生产DLL版本之间的DLL地狱般的差异

希望这有帮助,
JP

您可以让Alpha和betat的重建脚本创建工件(即构建核心),并将核心构建的结果放置在引用该位置的特定位置。

您可以让Alpha和betat的重建脚本创建工件(即构建核心)并将核心构建的结果放置在引用该位置的特定位置。

您可以使用。它是为这种情况设计的

如果你想避免这种情况,这些可能是你更好的选择。不过,我会避免将文件放在GAC中,除非您的核心项目非常稳定,并且不会经常更改。本地使用DLL提供了更大的灵活性

每个组件都可以有一个目录,其中包含需要引用的其他组件的DLL,并存储在SVN中,但这意味着在更新Core以将新的DLL推出到Alpha和Beta时需要付出额外的努力

使用良好的构建系统可以相当容易地处理这一问题。这种方法有一些缺点(即:构建系统中的可执行depredency),但也有一些优点,包括允许每个依赖项目根据需要有不同的版本,等等。

您可以使用。它是为这种情况设计的

如果你想避免这种情况,这些可能是你更好的选择。不过,我会避免将文件放在GAC中,除非您的核心项目非常稳定,并且不会经常更改。本地使用DLL提供了更大的灵活性

每个组件都可以有一个目录,其中包含需要引用的其他组件的DLL,并存储在SVN中,但这意味着在更新Core以将新的DLL推出到Alpha和Beta时需要付出额外的努力


使用良好的构建系统可以相当容易地处理这一问题。这种方法有一些缺点(即:生成系统中的可执行depredency),但也有一些优点,包括允许每个依赖项目根据需要具有不同的版本等。

为什么要在版本控制系统中存储派生文件(.DLL)?你有一个构建脚本和过程吗?我们现在没有。目前,在VS2008中,程序集只是按项目相互引用,因为它们都位于同一个解决方案中,并且位于单个存储库中。但是,当它们位于不同的解决方案和不同的存储库中时,这不是一个选项。因此,我正在尝试确定管理DLL以链接组件之间的最佳方法。为什么要在版本控制系统中存储派生文件(.DLL)?你有一个构建脚本和过程吗?我们现在没有。目前,在VS2008中,程序集只是按项目相互引用,因为它们都位于同一个解决方案中,并且位于单个存储库中。但是,当它们位于不同的解决方案和不同的存储库中时,这不是一个选项。因此,我正在尝试决定管理DLL以链接组件之间的最佳方式。这仍然需要每个开发人员都执行che