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

哈尔古什

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

对于共享的类,理想情况下,我想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"#>
}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有更聪明的方法来使用位于另一个命名空间中的代码

访问另一个命名空间中的方法

'使用命名空间{某些命名空间嵌套在另一个命名空间中}`

在另一个名称空间中使用“名称空间”的范围

无法使用ns中的另一个命名空间中的类:gen-class

命名空间范围的模板函数在另一个命名空间中可见

Azure Databricks:在另一个工作空间中使用的装载增量表

如果在另一个命名空间中使用未声明的变量,为什么Perl不警告-怎么警告我呢?

PTVS:如何在另一个项目中引用或使用Python源代码

如果缺少,则使用另一个值更新现有的data.frame

如何使用gradle将另一个项目添加到现有的android项目(不使用android studio)

如何将现有的 angularjs 项目包含/引用到另一个项目中?

如何在我现有的Android Studio项目中添加另一个项目?

是否可以让 Ingress 指向另一个命名空间中的服务?

扩展在Clojure中另一个命名空间中定义的协议?

如何在Zend2中的另一个命名空间中访问模型?

C ++如何在命名空间中调用另一个类的静态函数

C# List 在类和命名空间中,从另一个类访问它

当 defrecord 和协议都在另一个命名空间中时扩展协议

在另一个名称空间中使用同一类覆盖对象创建

如何从另一个修复一个现有的 Ubuntu 安装

我需要帮助将字符串从一个类移动到另一个命名空间中的另一个类

使用另一个命名空间的名称创建子命名空间

如何在不使用Depends或library()的情况下使用另一个在其命名空间中使用export而不是S3method的包中的S3方法

当 laravel 项目在另一个项目中时访问命名空间

使用带有现有代码的命名空间的项目

将所有源代码(未编译)从一个项目消耗到另一个项目中(PDFSharp)

如何在我的代码中使用另一个 java 项目?

使用在另一个名称空间中声明的变量