热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VisualStudio和源代码管理:如何共享代码?-VisualStudio&SourceControl:Howtohavesharedcode?

iwanttohavesomesharedcode(codelibrary,controls,utilities,helperclasses,etc)inVisualS

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).

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

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.

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

Visual Studio does not support code search paths.

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

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.

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

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

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

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

那么其他人如何避免使用可执行文件运送DLL?


Update 1

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

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

4 个解决方案

#1


3  

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).
  2. Visual Studio允许您添加文件的链接。选择“添加现有项目”,选择文件,然后单击“添加”按钮旁边的箭头。将显示一个弹出窗口,您应该从那里选择“添加为链接”。现在,您可以将公共代码存储在一个位置(文件夹)中。

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.
  2. 在可重用的程序集中编译公共代码并在项目中使用它们。部署时,使用ILMerge将所有程序集合并为一个程序集。我个人更喜欢这个选项。

#2


1  

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:

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

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.

更新项目时,将创建ExternalLib文件夹并使用repo的内容填充该文件夹。任何提交都将反映在各自的回购中。

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

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

#3


0  

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.

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

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

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

#4


0  

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

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


推荐阅读
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 本文详细探讨了编程中的命名空间与作用域概念,包括其定义、类型以及在不同上下文中的应用。 ... [详细]
  • 探索将Python Spyder与GitHub连接的方法,了解当前的技术状态及未来可能的发展方向。 ... [详细]
  • HDU 2537 键盘输入处理
    题目描述了一个名叫Pirates的男孩想要开发一款键盘输入软件,遇到了大小写字母判断的问题。本文提供了该问题的解决方案及实现方法。 ... [详细]
  • UVa 11683: 激光雕刻技术解析
    自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文探讨了一种统一的语义数据模型,旨在支持物联网、建筑及企业环境下的数据转换。该模型强调简洁性和可扩展性,以促进不同行业间的插件化和互操作性。对于智能硬件开发者而言,这一模型提供了重要的参考价值。 ... [详细]
  • 本题要求实现一个高效的算法,在一个 m x n 的矩阵中搜索目标值 target。该矩阵具有以下特性:每行的元素从左到右按升序排列,每列的元素从上到下按升序排列。 ... [详细]
author-avatar
mobiledu2502905213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有