从多个项目中引用C#代码

问题描述 投票:7回答:4

我有一个充满C#代码的.cs文件,我一直在多个项目中重复使用。

现在我通过将代码复制并粘贴到每个项目目录中的新文件中来将它包含在这些项目中。这是错误的做法。

什么是正确的方法呢?

正确的方法应该:

  • 将公共代码仅保留在计算机上的一个位置
  • 并保持链接新鲜 - 所以当公共代码更改时,每个项目都知道它,下次我重新编译该项目。

随机猜测,我期待像using mycode = C:\common\mycode.cs那样的某种指令,但我确信这不是.NET的做事方式。

(我正在使用C#2010,.NET 4.0,并且只在一台计算机上本地编译此代码。)

c# code-reuse
4个回答
6
投票

创建类库,添加文件,构建项目,并引用从构建创建的DLL。将using语句添加到将引用它的每个文件。此外,如果它出错,并且DLL在项目中,您和右键单击对象 - >解析,它将为您添加使用。


8
投票

将代码放入单独的类库项目中,并在其他项目中引用该项目。


7
投票

要么,

  • 右键单击Solution explorer中的项目
  • 选择添加现有项目
  • 浏览到另一个项目中的.cs文件,然后单击以选择该文件
  • 单击“添加”右侧的向下箭头按钮,然后选择“添加为链接”

您现在有两个项目引用的一个源文件,但它具有您在第一个项目中提供的名称空间,这可能并不理想。

最好的组织方式是,正如其他两个答案所建议的那样,将公共代码放在类库中,使其具有MyClassLibrary的名称空间而不是SomeOtherProject。它可以节省更大的dll被复制,这对你开发像Windows Phone这样的小东西来说并不重要。或者在所有应用程序中将公共代码的命名空间更改为Me.Common - 哪个是原始的并不重要,您可以从引用它的任何项目编辑它。

检查源控制不是问题。


0
投票

我编写了一个应用程序,可以自动添加代码作为链接,方便重用大量代码和更改的项目。它在https://github.com/CADbloke/CodeLinker

要么

不要害怕编辑XML .cs​​proj文件。例如,这有效......

<Compile Include="$(Codez)\z.Libraries\diff-match-patch\DiffMatchPatch\**\*.cs"
Exclude="NotThisOne.cs;**\NotThisFolderWith\This*.cs">
<Link>Libs\%(RecursiveDir)%(Filename)%(Extension)</Link>
</Compile>

...并将从源文件夹和子文件夹中将所有C#文件作为目标项目中的链接文件提供给您。

  • $(Codez)是我在PC上使用的Windows环境变量。
  • 我也可以在最后使用*.*而不是*.cs
  • 这是Visual Studio可能会破坏您的一件事,将文件添加到充满通配符链接文件的文件夹中可能会将它们分解为单独的条目。或不。取决于风。
© www.soinside.com 2019 - 2024. All rights reserved.