繁体   English   中英

在另一个项目/命名空间中使用现有源代码

[英]Use existing source code in another project/namespace

我在一个解决方案中有两个库项目(除了其他项目),它们必然需要共享某些类,但由于自动更新的原因必须保持独立。

对于共享的类,我理想地希望在两个库中使用相同的class.cs文件,这样我就不必一致地检查对类的更改是否通过两个库传播。

但是 ,两个库的名称空间不同,因此每个库中包含类的文件需要不同的namespace classlib {}声明。

我正在使用git repo,如果有技术通过分支/合并操作来完成此操作。
目前正在使用VS2013。

我怎样才能做到这一点?


例:

library1.dll

namespace library1
{
    public class SharedClass
    {
        /// code must match SharedClass in libary2
    }
}

library2.dll

namespace libary2
{
    public class SharedClass
    {
        /// code must match SharedClass in library1
    }
}

在公共名称空间中声明SharedClass,而不是两个不同的名称空间。 您可以将文件链接到项目中,而不是物理地包含它们。

来自msdn

您链接到Visual Studio中项目的文件。 在解决方案资源管理器中,右键单击项目,然后选择“添加现有项目”或者,可以键入Shift + Alt + A. 在“添加现有项”对话框中,选择要添加的文件,然后在“添加”下拉列表中,单击“添加为链接”。

namespace Khargoosh.MathLib.Common   { public class SharedClass { ... }  }
namespace Khargoosh.MathLib.Library1 { ... }
namespace Khargoosh.MathLib.Library2 { ... }

要么

namespace Khargoosh.MathLib          { public class SharedClass { ... }  }
namespace Khargoosh.MathLib.Library1 { ... }
namespace Khargoosh.MathLib.Library2 { ... }

一种完全不同的处理方式是使用T4模板和一些逻辑来动态创建文件。 * .tt模板文件的内容(不是* .cs文件!):

namespace library1
{
<#@ include file="MyCommonClass.cs"#>
}

而在另一个图书馆

namespace library2
{
<#@ include file="MyCommonClass.cs"#>
}

类文件本身不会声明命名空间。

根据您提供的信息,如果您的共享类真正“普遍”,您应该创建一个第三个库,您的两个主要库可以引用。 例如:

MainLib1( 引用 commonLib)

MainLib2( 引用 commonLib)

commonLib(包括class.cs和其他常见的代码)

我需要能够单独更新library.dll文件

然后,您应该使用子模块执行此任务。

子模块是同一根下的不同git存储库。
这样,您可以在根存储库中的文件夹级别管理2个不同的项目

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM