参考多个项目中的C#代码

本文关键字:代码 项目 参考 | 更新日期: 2023-09-27 18:23:53

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

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

正确的 方法是什么?

正确的方式应该是:

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

随便猜测一下,我会期望一些像using mycode = C:'common'mycode.cs这样的指令,但我确信这不是.NET做事的方式。

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

参考多个项目中的C#代码

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

或者,

  • 在解决方案资源管理器中右键单击项目
  • 选择添加现有项目
  • 浏览到另一个项目中的.cs文件,然后单击以选择该文件
  • 单击Add右侧的向下箭头按钮,然后选择Add as Link

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

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

检查源代码管理是否不是问题。

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

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

不要害怕编辑XML.csproj文件。例如,这是有效的。。。

<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)是我在电脑上使用的Windows环境变量
  • 我也可以在最后使用*.*而不是*.cs
  • 这是Visual Studio可能会破坏您的功能之一,将文件添加到充满通配符链接文件的文件夹中可能会将它们分解为单独的条目。或者不是。取决于风