在 Visual Studio 中(至少是 2010 年——不知道添加该功能的确切时间),您可以将现有项目作为“链接”添加到项目中,这意味着源文件在项目之间共享。只有一个版本的源文件存在。
- 右键单击您的项目。
- 单击“添加..现有项目”。
- 找到选择的源文件并选择它。
- “添加”按钮是一个下拉菜单。单击按钮中的下拉图标。
- 单击“添加为链接”。
简单的!
现在,对共享源文件的任何更改都会反映在这两个地方。当然,缺点是开发人员没有得到任何迹象表明对共享源文件的更改可能会产生比她可能意识到的更广泛的影响。
另一种选择是创建一个hard link
两个文件名引用同一个文件(Unix 术语中的“inode”)。在命令行上,只需念出魔法咒语:
fsutil hardlink create <new-filename> <existing-filename>
就像是:
fsutil hardlink create c:\foo\bar\some-project\bazbat.cs c:\foo\bar\another-project\bazbat.cs
限制是两个名称必须在同一个卷上。
当然,这有可能混淆您的源代码控制系统。我敢打赌,TFS 没有考虑文件系统不一定是树结构并且同一个文件可能存在于多个目录中的可能性。
硬链接文件可以按任何顺序删除:当最后一个链接被删除时,文件将不复存在。
第三个选项,当然,可能是“最佳实践”——讨厌这个词!— 是将分片类分解为一个独立的程序集,该程序集部署到客户端和服务器。如果想限制浮动的程序集数量,构建后,您可以使用ilmerge
来合并程序集:
想一想,您也没有理由不能将共享程序集嵌入为按需加载(甚至在启动时)的嵌入式资源。这甚至可能比使用ilmerge
. 以下是如何做到这一点:
http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx