【问题标题】:How do I keep common code shared between projects in c#?如何在 c# 中的项目之间保持公共代码共享?
【发布时间】:2010-12-03 21:09:19
【问题描述】:

我对 c# 有点陌生,我正在尝试找出一个很好的解决方案,将通用代码保存在多个项目使用的某个地方。

首先,我尝试将其保存在 .cs 文件中并将其添加到需要代码的项目中,但是这个复制文件意味着如果我对公共代码进行任何更改,它将不会反映在使用它的各种项目中代码。

然后我尝试创建一个类库,并使用代码在项目中引用 DLL。首先,即使我遵循教程,我也无法让它工作,即使我引用了 DLL,我仍然无法以某种方式使用它,但即使这有效,它仍然需要一个额外的 DLL 与我的应用程序捆绑在一起一些通用代码,这不是我想要的。

有什么方法可以保留被引用的通用代码而不需要发送 DLL w

【问题讨论】:

    标签: c#


    【解决方案1】:

    最好的解决方案是拥有一个您在每个项目中引用的通用库。但是您说您不想这样做,因为它需要捆绑额外的 dll,这真的是个大问题吗?您还提到您无法使其正常工作,发布错误的详细信息等,我们将能够提供帮助。

    另一个选项,假设您使用的是 Visual Studio,是将通用文件链接到您的项目中,而不是添加它。这会将公用文件保留在其当前位置,而不是将其移动到您的项目目录中。

    为此,请转到添加现有文件对话框,但在“添加”按钮上单击向下箭头并选择“链接”。

    如上所述,使用通用库是最好的解决方案,因此如果捆绑这是一个无法克服的问题,您可以考虑使用 ilmerge。这会将您的所有 dll/exe 合并到一个文件中,然后您可以部署该文件。

    【讨论】:

    • 太好了,我从未注意到要添加为链接的小箭头,这正是我所需要的,谢谢!
    • 至于为什么添加类库失败我不知道,我已经创建了类库并编译了它,它看起来很好。我在使用它的解决方案中引用了它,但是当我尝试为其添加使用代码甚至尝试访问它时,就好像它根本没有被引用一样,而且我也看不出库代码有任何问题。跨度>
    • 删除了实际的代码,但这就是它的样子:使用 System; namespace textfile { class textfiletools { public static bool readfile(string filename, out string[] dest) { } public static bool writefile(string filename, string[] data) { } } }
    • 很难确定,但这听起来像是命名空间问题,或者您的公共库中的所有类都标记为私有或内部。编辑:看到你的最后一条评论后,如果你公开了 textfiletools 类,你应该可以使用它(即公共类 textfiletools)。如果没有访问修饰符,则假定该类是私有的,因此您的引用库将无法看到该类或其中的方法,即使这些被标记为公共。
    • 您需要一个包含两个项目的解决方案。在工具 -> 选项 -> 项目和解决方案下,确保选中“始终显示解决方案”。现在像往常一样打开解决方案,然后右键单击以添加现有项目。添加要在项目之间共享的类库。然后添加从主项目到类库项目的引用(项目引用不是 DLL 引用)。不要忘记 C# 会自动使用命名空间,因此您需要确保源文件中的“使用 xxx.xxx.xxx”正确无误。
    【解决方案2】:

    您可以添加指向公共文件的链接:

    1. 右键单击项目
    2. 选择“添加”=>“现有项目...”
    3. 找到您要共享的 .cs 文件
    4. 点击添加框上的下拉菜单
    5. 选择,添加为链接。

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      你快到了。您可以添加现有文件,但请注意,您可以展开“添加”按钮并选择链接到它。

      【讨论】:

        【解决方案4】:

        您可以将链接文件添加到项目中 - 这不会创建副本,而只是引用它。

        查看链接页面中的"Adding an Existing Item as a Link" 部分:

        要创建指向现有项目的链接:

        1. 在解决方案资源管理器中,选择目标项目。
        2. 在“项目”菜单上,选择“添加现有项目”。
        3. 在“添加现有项”对话框中,找到并选择要链接的项目项。
        4. 从“打开”按钮下拉列表中,选择“添加为链接”。

        【讨论】:

          【解决方案5】:

          在 Visual Studio 中,您可以添加指向现有项目的链接:

          在解决方案资源管理器中,右键单击并选择添加 -> 现有项目... 浏览到该文件,而不是单击“添加”,而是选择“添加为链接”。

          但我建议为通用代码使用单独的项目。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-05
            • 1970-01-01
            • 2011-02-09
            • 1970-01-01
            相关资源
            最近更新 更多