2

我想在 Visual Studio 中有一些共享代码(代码库、控件、实用程序、助手类等)。我不是指共享程序集,我指的是共享代码(即我想将一个程序集与我的应用程序一起发布,即可执行程序集)。

其他开发环境中的技术方法是在我的机器上的一个路径中拥有公共源代码,并为 IDE 提供一个路径列表来搜索代码文件。

Visual Studio 不支持代码搜索路径。

后备黑客解决方案是将源代码一遍又一遍地复制到每个项目中。但是为了将它们全部保留为一个版本,它们在源代码控制中共享。当您的源代码控制提供程序是支持共享文件的 Microsoft Visual SourceSafe 时,这很有效。

但其他源代码控制产品(CVS、Subversion、Microsoft Team Foundation Source Save Server、SVN)不支持共享文件。

那么其他人如何避免将 DLL 与他们的可执行文件一起发送呢?


更新 1

这是单个文件部署的问题。ClickOnce 在 3 个文件夹中生成 18 个文件(即多个文件)

4

4 回答 4

3

我可以提出两个解决方案:

  1. Visual Studio 允许您向文件添加链接。选择“添加现有项目”,选择您的文件,然后单击“添加”按钮旁边的箭头。将显示一个弹出窗口,您应该从那里选择“添加为链接”。现在您可以将常用代码存储在一个位置(文件夹)。

在此处输入图像描述

  1. 在可重用的程序集中编译您的通用代码并在您的项目中使用它们。部署时使用ILMerge将所有程序集合并为一个。我个人更喜欢这个选项。
于 2008-11-04T16:13:31.227 回答
1

在我的工作中,我们开始使用Subversion 的外部文件夹来解决这个问题。您只需在您的根文件夹(或任何文件夹)上放置一个“外部”属性,例如:

ExternalLib https://yourrepo/SharedLibs/trunk

当您更新项目时,将创建文件夹 ExternalLib 并填充 repo 的内容。任何提交都将反映在各自的仓库中。

所以,你可以让你的备份黑客解决方案也适用于 SVN =)

于 2008-11-04T16:33:39.423 回答
0

我们使用 ClickOnce 部署,它一直非常可靠。使用 ClickOnce,虽然下载了许多文件(包括 DLLS),但在概念上只有一个对象,即应用程序,尽管对用户是隐藏的。然后通过共享项目处理共享代码。

但是,如果您实际上只需要一个文件,ClickOnce 将不适合您...

于 2008-11-04T16:22:29.430 回答
0

也许考虑共享程序集并在构建过程中使用像 ILMerge 这样的工具将它们全部合并到一个错误程序集中。

于 2008-11-04T16:53:07.027 回答