Visual Studio和源代码控制:如何共享代码?

发布于 2024-07-08 20:59:16 字数 561 浏览 8 评论 0原文

我想在 Visual Studio 中拥有一些共享代码(代码库、控件、实用程序、帮助器类等)。 我的意思不是共享程序集,而是共享代码(即我想随我的应用程序一起发送一个程序集,即可执行程序集)。

其他开发环境中的技术是将公共源代码放在我的机器上的某个路径中,然后为 IDE 提供一个路径列表来搜索代码文件。

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

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

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

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


更新1

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

i want to have some shared code (code library, controls, utilities, helper classes, etc) in Visual Studio. i do not mean shared assemblies, i mean shared code (i.e. i want to ship one assembly with my application, the executable assembly).

The technique in other development environments way is to have the common source code in a path on my machine, and the IDE is given a list of paths to search for code files.

Visual Studio does not support code search paths.

The back-up hack solution is to copy the source-code over and over into every project. But then in order to keep them all as one version, they are shared in source control. This works well when your source control provider is Microsoft Visual SourceSafe - which supports shared files.

But other source control products (CVS, Subversion, Microsoft Team Foundation Source Save Server, SVN) do not support shared files.

So how does everyone else avoid shipping DLL's with their executable?


Update 1

It is an issue of single file deployment. ClickOnce generates 18 files in 3 folders (i.e. more than one file)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

公布 2024-07-15 20:59:16

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

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

在此处输入图像描述

  1. 在可重用程序集中编译通用代码并在项目中使用它们。 使用 ILMerge部署时将所有程序集合并为一个程序集。 我个人更喜欢这个选项。

I could propose two solutions:

  1. Visual Studio allows you to add a link to a file. Choose "Add Existing Item", pick your file and then click the arrow next to the "Add" button. A popup will display and you should choose "Add as link" from there. Now you can store your common code in one location (folder).

enter image description here

  1. Compile your common code in reusable assemblies and use them in your projects. Use ILMerge to merge all assemblies into one when deploying. I personally prefer this option.
寂寞陪衬 2024-07-15 20:59:16

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

ExternalLib https://yourrepo/SharedLibs/trunk

当您更新项目时,将创建文件夹ExternalLib并填充存储库的内容。 任何提交都将反映在相应的存储库上。

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

At my work we starting to solve this problem using Subversion´s external folders. You just need to put a 'external' property on yor root folder (or any folder), like:

ExternalLib https://yourrepo/SharedLibs/trunk

When you update the project, the folder ExternalLib will be created and populated with the repo´s contents. Any commit will be reflected on the respectively repo.

So, you can make your back-up hack solution works with SVN too =)

携余温的黄昏 2024-07-15 20:59:16

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

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

We use ClickOnce deployment, which has been very reliable. With ClickOnce, there is conceptually a single object, the application, although many files (including DLLS) are downloaded, although hidden to the user. Shared code is then dealt with through shared projects.

But if you actually physically require just a single file, ClickOnce won't work for you...

白云悠悠 2024-07-15 20:59:16

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

maybe consider having shared assemblies and use a tool like ILMerge during your build process to merge them all to one bug assembly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文