乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 196|回复: 14

相同的代码,多个项目,多个构建

[复制链接]

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2015-10-2 07:58:41 | 显示全部楼层 |阅读模式
编辑:2015年10月31日。- 名称更改,Github 存储库名称已更改。
Code Linker 只能在 Visual Studio 中工作。它不是一个生成过程,而是一种在C#项目之间共享相同代码的方法。
代码链接器所做的就是将现有代码文件的链接添加到目标
csproj
。不复制任何文件,不解析源代码。原始的
csproj
文件被挖掘为其源代码
事物,并且该信息用于添加指向目标
csproj文件的链接
。就这样。它就此结束。目标 csproj 就是它所触及的全部内容。它会自动将文件添加为指向 C# 项目过程的链接。该链接很好地解释了它,以及您会这样做的一些原因。
代码存储库位于 https://github.com/CADbloke/CodeLinker
https://github.com/CADbloke/CodeLinker/wiki/Illustrated-Example 有一个插图示例
,那里有一个广泛的自述文件,所以我不会在这里重复它。
...为了后代的缘故,原文(后文本是“屁股”的同义词,这是我对自己所做的)......
(编辑 Oct12, 2015)向下滚动到这篇文章,这就是我开始理解的地方。当我有足够的睡眠时,我会发布更好的描述。
...
我在 https://github.com/CADbloke/CodeLinker 方面遇到了另一个裂缝
,这一次我专注于
将源代码传播到
控制其所有构建设置的目标项目。显然,我们中的一些人(所有人)虽然在一个项目中构建了72个构建,但有点难以管理

(编辑 Oct12, 2015) 不,我撒谎了,我正在创建指向现有源代码的链接。在源项目中挖掘代码链接,并将这些链接写入目标项目。
那里有一个广泛的自述文件,所以我不会在这里重复它。我很想听听任何想法,建议,WTF.
对于那些不了解历史的人......
http://www.theswamp.org/index.php?topic=41868.msg497509#msg497509
http://www.theswamp.org/index.php?topic=49039.msg541744#msg541744
http://www.theswamp.org/index.php?topic=49961
只是其中的一小部分。
这就像看看你多年前的任何作品一样......跆拳道?希望这个能少一些WTF /分钟

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2015-10-2 09:23:03 | 显示全部楼层
Git -从模板项目合并-无子目录
http://stack overflow . com/questions/9106387/git-Merging-from-a-template-project-no-子目录
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2015-10-2 11:10:46 | 显示全部楼层
使用CMake
生成C#项目http://stackoverflow.com/a/15418074
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2015-10-5 06:29:54 | 显示全部楼层

这有潜力,但需要好的Git-fu。此外,Google“csproj合并冲突”
我可能在那里错过了一些东西,但保持更改源代码与之同步听起来并不容易。你能详细说说吗?
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2015-10-5 09:44:21 | 显示全部楼层

这有潜力,但需要良好的Git-fu。此外,谷歌“csproj合并冲突”
我可能遗漏了一些东西,但保持更改源代码与之同步听起来并不容易。你能详细说明一下吗
`Git-fu'lol(这让我笑了)这只是一个命令
Git-remote-add…
。我在谷歌上搜索了csproject合并冲突,但我没有任何上下文(我不依赖VS IDE)来了解它是关于什么的。这是你能忍受的吗?此选项最符合您的标准,并为您提供更新或不更新的能力(非常灵活)
如果您担心git fu,您可以构建一些批处理脚本,以便从模板中进行签出和更新
第二个选项对我来说有点难理解(VS的东西让我很困惑;我不使用它,VS IDE会握着你的手太多),但我对CMake选项的理解是,你的模板项目被引用到位(没有将文件复制到新项目)
我建议对第一个选项(git选项)进行快速测试,看看您是否喜欢。
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2015-10-5 20:10:31 | 显示全部楼层
谢谢你的跟进。CMake方法看起来像是对VisualStudio的csproj项目的背离?这不是我目前感兴趣的方向。我真的很喜欢Visual Studio,因此我最新的方法是在IDE中的项目之间克隆代码,如果您更改了一个项目中的代码,它会更改所有项目的代码,尽管您需要从原始项目中添加和删除任何“通用”文件,如果您偏离原始源项目,这可能是一个痛点。我希望在目标项目中编辑代码的唯一原因是修复各种API之间的任何代码差异,或者修复失败的单元测试(在修复CADtest之后)。我还喜欢在IDE中看到
#指令影响了什么代码,以及实际调用了什么API类。是的,我喜欢有人牵着我的手
如果CMake确实支持csproj,那么它看起来有点像我在http://www.theswamp.org/index.php?topic=41868.msg497509#msg497509对我来说,这最终会中断,因为导入项目会拖累框架和构建设置、引用以及任何Nuget包细节。它也倾向于把事情埋得太深,以至于不能很快理解它们,尤其是当我回到我很久没看的东西上时。我对CMake没有任何经验,所以我在这里可能有点离题
Git方法有潜力,但这是否意味着您需要在不编译(gasp!没有Intellisense)和处理Git远程的项目中编写代码。不,其实没那么难,但我想让一切都“简单”。理论上。您的Git方法适合您,也许正如您所说的,因为您不在Visual Studio中工作
我还想要一个系统,可以在我已经写过的东西之上插入,而不必破坏它。您永远不会中断源项目,因为它从不向其写入代码,尽管如果您的平台差异很大,其中的代码将随着各种
#if
指令而变化
本文:http://haacked.com/archive/2014/04/16/csproj-merge-conflicts/解释了我所说的.csproj合并冲突的含义。了解csproj文件中的情况,并密切关注它,对于这种方法非常重要。它们只是XML文本文件,因此在提交差异中差异将非常明显,但您需要知道会发生什么。一旦你看到了一些变化,你就会知道什么看起来很奇怪。此外,恢复更改也很容易
我用WPF AutoCAD项目测试了代码克隆器,它工作得很好,所有功能都很好,在Visual Studio中看起来不错(嘿,我很在乎),构建得也很好。
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2015-10-6 08:00:41 | 显示全部楼层
对不起,伙计,我差一点就要放弃你了。你做过测试吗(因为我刚做过)?如果这看起来很粗鲁,我很抱歉,但我只是不知道您是如何构建代码/项目的,因此必须由您来驱动,而不是我。
CMake是一个跨平台构建系统。这意味着您可以在windows、Mac、Linux和Unix机器上获取代码并进行编译。为此,您可以编写一份“如何构建”项目的食谱。CMake采用该配方并为您的平台构建一个构建系统(因此在windows中,CMake可以根据您的代码和配方构建一个VS项目。在Mac中,它将根据您的编码和配方构建xcode项目。在unix中,它会构建一个Makefile等)。忘了CMake吧,这可以工作,但对您来说命令行太多了(您必须输入太多)
运行测试
1.创建模板项目:“[EX]_VS_template-project”
2.关闭并创建另一个项目:“[EX]_ VS_Test-project-One”
3.打开命令行并添加对上一个项目的引用:git remote add-f template../[EX]\VS_。将模板项目添加到新项目中(我在解决方案资源管理器中右键单击“解决方案”[EX]_VS_Test-project-one”,然后选择“添加现有项目”。
注意:
1.显然,您可以在csproject文件中使用通配符,因此我不知道这是否对您有帮助(使用编译/智能感知语句)
  1. [I]
  2.   
  3. [/I]

现在,尽管如此,这是我不喜欢的手-i、 VS保留的目录结构非常可怕!我整天都想看这个,真是疯了。在我的C++项目中,我结合目录结构和CMake解决了这个问题和其他类似的问题。
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2015-10-6 17:07:56 | 显示全部楼层

也许你应该。我不想浪费您的时间,如果Visual Studio项目对您不感兴趣(甚至冒犯您),那么这个话题可能不适合您。你显然没有读过我在第一篇文章中提到的Github项目的自述。我的目标都在那里-很明显(虽然这里没有这么多),我希望这在Visual Studio中工作。我还注意到我是如何在那里构建我的项目的
您似乎也没有提到我链接到的任何历史帖子。我在Github自述和链接帖子中都提到了C#project文件中的通配符用法及其脆弱性。通配符是MSBuild的东西,Visual studio在某种程度上容忍它们,但在本质上并不接受它们-如果您碰巧将文件添加到使用通配符链接的文件夹树中,它会将它们枚举到单个链接中。如果你当时碰巧错过了,我真想告诉你这有多有趣
你讨厌Visual Studio(你这么说的),似乎想把我从中解救出来。感谢您的关注,但我不会有事的。我对自己在这一领域的能力不足(可能除了<tt class=“bbc_tt”>csproj</tt>文件)和我对Visual Studio的“牵手”的喜爱不表歉意,很明显,您在这些方面比我有更广泛、更深刻的经验。托尼·坦齐洛(Tony Tanzillo)也是如此,他居高临下的语气也扼杀了很多讨论。我相信有很多人在读这篇文章,他们不想加入讨论,因为他们担心自己会显得愚蠢。快速阅读我的后历史将表明我已经克服了这种恐惧,但大多数人都没有。同样的精英主义也阻碍了Stackoverflow.com的发展
我将以一个更明确的标题开始一篇新文章,为我在最初的标题中所宣布的过于雄心勃勃的范围表示歉意
感谢您对CMake的解释,这比他们页面上的解释要好得多
我真诚地感谢您的建议和帮助,但我会为您的语气呼吁您,您对Visual Studio的偏见是您的问题(不是我的问题),让我看起来像一只小茴香既是社区杀手,也是多余的-我不需要您的帮助。
干杯
Ewen
回复

使用道具 举报

61

主题

792

帖子

35

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1015
发表于 2015-10-6 21:24:15 | 显示全部楼层
VS一点都没有‘冒犯’我。我使用过几次,我只是更喜欢使用我的编辑器和编译器,而不是遵循IDE。我已经看到了篱笆的两面,所以觉得好像我能有一个观点。
如果您感觉到任何语气,请随时打电话给我。
是的,我已经阅读了您提供的所有链接。我读了你的《读我两遍》。我不明白大部分的联系,因为我们说不同的语言。尽管如此,我还是想帮忙。不,我没有时间去阅读所有的东西,也没有时间去做一系列的测试或者背一些我还没有完全掌握的概念。
Tony有时有点粗暴,但他总是对我很有帮助,但我一直明白,像他这样有能力的人可能很忙,所以我尽量不去过多解读“语气”,也就是说,试着从表面上看文字,除了帮助和指导之外,不去过多解读。
同样,我使用过几次VS。为了好玩,我甚至移植了我的一个项目。...我一点也不想“拯救”你(我为什么要在乎你用什么)。我只是想让你看到我的不足和能力,这样你就可以对我提出的和/或补充的任何方向/建议进行补充...*叹息*祝你好运。
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2015-10-6 23:23:49 | 显示全部楼层
我以同样的方式接受了托尼的评论,我在这里想念他。我个人对你的帖子一点也不生气(出于与你没有被托尼冒犯的原因完全相同),但我认为一些潜伏者可能更敏感,因此更不愿意发布他们的意见,以免他们被出现。我想这在任何地方都是一个风险,可能是他们的问题 - 我个人来这里是为了犯错并被纠正。我不认为我对此说得很清楚,我只是不想吓唬新手沉默。
感谢您到目前为止的投入。我当然不想表达任何忘恩负义 - 远非如此,我在这里学到了一些东西,这就是我来这里的目的。我想你和我在Visual Studio和CMake上可能永远不会有共同的看法,这是一件好事,像这样的论坛需要这种不和谐和意见分歧。如果你觉得我贬低了你的意见和经验,那么我很抱歉,这不是我的本意,远非如此。
就我个人而言,我会避免使用简单的Git方法,因为我认为大项目可能是少数几个可以一致地合并的项目。代码克隆器将所有代码放在一个地方。我想我需要在我的自述文件中的工作流程中澄清,立即提交克隆的代码是一个好主意,这样你就可以判断你是否不小心在事后添加了一些本地的东西。它仍然需要工作(它只是早期),我确实需要让它在重写
csproj文件之前检查是否有任何实际更改
,因为整个重新加载最近保存的项目很快就会变得令人厌烦。
我认为Code Cloner最好的演示是在本地克隆它,构建几次,直到它克隆到自己的
.NET 3.5
项目中,然后看看下一个Git提交是什么样子。您将看到它已添加到 .NET 3.5 项目的行。
顺便说一句,在Visual Studio中用通配符链接文件会因为文件扩展名不同而中断很多(
*.xaml,*.config,*.resx
等)以及
“DependsOn”
属性,你需要来自原始项目的元信息,那么在Visual Studio中你需要它,如果没有它,它可能会构建得很好。

*.*链接
可能会造成一些混乱,最终你最终会得到逐渐无法维护的东西,比如......
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 23:47 , Processed in 0.283292 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表