惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - NetCobra

近况 让TortoiseSVN使用类似TortoiseCVS的文件冲突解决方式 CSDN双雄——universee(太极语言)和Sinox(汉澳操作系统) The Netron project down, Netron Reloaded... 推荐一个开源项目和一个免费工具 Windows平台下使用Active Directory对Subversion进行权限控制(非完美解决方案) 看看美国的烂公司是怎么样的烂法 SQLite 不能加密? - NetCobra 对软件的多语言化方法的一点看法 最近工作情况 关于 zjsflyer 对 JPgraph 中文显示乱码问题的回复 - NetCobra [旧文]来自 Borcon2003 中国开发者大会的现场报道 [问题]DotNet 项目如何实现在构建时 Build 号自动增加? 每日构建中的两个问题 如何防止 Wiki 被恶意篡改? [翻译] NMock 两分钟教程 [翻译] NMock 简介 头疼的问题:NAnt 的 cvs-checkout 任务无法执行 可以下载 Delphi 2005 试用版了
DotNet 项目中链接文件的用处
NetCobra · 2005-07-19 · via 博客园 - NetCobra

DotNet 项目中链接文件的用处

首先,什么是链接文件?

在VS.Net中打开一个WinForm项目或者DLL项目(在Web项目中不能使用链接文件,感谢dudu指出),在随便一个项目中右击鼠标,选择“添加”→“添加现有文件”(抱歉,手头的机器太差,没有装VS.Net,所有的操作说明全凭记忆,如果有出入敬请原谅),随便选中一个文件,不要选“打开”,点击“打开”按钮右侧的下拉菜单,选择“链接文件”;

选中的文件已经添加到了你的项目中,但是这个文件和你平常添加到项目中的文件是不一样,这仅仅是一个指向你所选择文件的链接,相当于一个快捷方式;文件在你指定添加的位置上是不存在的,但是你可以照样地对这个文件进行编辑、编译等操作,和普通文件地使用并没有什么不同;

链接文件有什么用处?我能想到的大概有这么几个:

1.给可执行文件项目进行单元测试;
由于被测试的项目必须是DLL,才能够被NUnit单元测试项目引用而进行测试,因此如果你把逻辑代码放到了可执行文件项目中,NUnit就无用武之地了;

这种情况下要进行单元测试,可以新建一个DLL项目,通过链接文件把可执行文件下的所有文件都进行链接,然后把NUnit单元测试项目的引用指向这个项目,这样就可以用NUnit进行测试了;当你的可执行文件进行了修改的时候,“链接项目”的编译结果也会是最新的。

2.引用其他可执行文件项目
如果你要在自己的项目中引用其他可执行文件项目中的代码,除了将被引用项目的属性临时修改为DLL,编译后再改回来,似乎没有其他办法了。

类似上面对可执行文件项目执行单元测试的情况,我们同样可以使用链接文件解决这个问题:新建一个引用被引用的可执行文件项目的DLL项目,将你自己的项目引用指向这个新建的DLL项目即可;

上面两种情况,究其根本都是系统设计不当造成的,重构或者修改设计可以避免这种问题,但是实际中总是很难做到,用链接文件作为补救措施总还算是一种比较好的亡羊补牢方式。

3.给一个解决方案中的项目统一版本信息和签名信息
一个项目的版本信息和签名信息是在该项目的Assembly.cs文件中指定的,将所有的项目中的Assembly.cs文件都链接至同一个文件,以后只要修改这个Assembly.cs文件中的内容,就可以保证所有项目的版本信息和签名信息都是一致的。 NAnt 项目的 Build 过程就是这样的。