【问题标题】:Make reference to C# code from multiple projects从多个项目中引用 C# 代码
【发布时间】:2012-03-02 10:28:58
【问题描述】:

我有一个 .cs 文件,其中包含我在多个项目中不断重复使用的 C# 代码。

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

正确的方法是什么?

正确的方法应该是:

  • 将公用代码仅保存在我的计算机上的一个位置
  • 并保持链接新鲜 --- 所以当公共代码发生变化时,每个项目都会意识到这一点,下次我重新编译该项目时。

随机猜测,我希望有类似 using mycode = C:\common\mycode.cs 这样的指令,但我确信这不是 .NET 的做事方式。

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

【问题讨论】:

    标签: c# code-reuse


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      或者,

      • 在解决方案资源管理器中右键单击项目
      • 选择添加现有项目
      • 浏览到另一个项目中的.cs文件,单击选择文件
      • 单击添加右侧的向下箭头按钮并选择添加为链接

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

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

      检查源代码管理没有问题。

      【讨论】:

      • 不知道“添加为链接”存在,谢谢!对于我不太关心将我的 10 行代码正确组织到单独的类库项目中的小型测试项目很有用。
      • 这是一个非常好的快速修复解决方案,首先。稍后,也许类库或具有 NPM/Nodejs 模块(如果在微服务架构中)等版本的库会很棒。
      【解决方案3】:

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

      【讨论】:

      • 我已经完成了所有这些,但现在我似乎无法使用类库中的函数。我需要某种using 指令吗?
      • @Joe 是的,您需要添加对项目的引用,然后在每个引用库中类的文件中添加 using。所以在顶部使用[命名空间]。如果 DLL 在项目中,Visual Studio 也可以通过右键单击来解决它。
      • 而且我还需要将 .dll 中的类公开... facepalm
      • 我有一个问题 - 我希望能够将我的程序部署为单个 .exe 文件 - 那么我需要将该 .dll 附加到 .exe 吗?我知道我需要使用 3rd 方库来做到这一点,我不喜欢这样做。这就是为什么我有点喜欢下面的“添加为链接”选项 - 其中代码将自动构建到我的应用程序中。
      【解决方案4】:

      我编写了一个应用程序,可以自动将代码添加为链接,这对于重用大量代码并稍作改动的项目非常方便。在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 可能会破坏您的其中一项内容,将文件添加到充满通配符链接文件的文件夹中可能会将它们分解为单独的条目。或不。取决于风。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 2011-11-08
        相关资源
        最近更新 更多