添加
-> 现有项
,然后从 添加
下拉按钮中选择 添加为链接
。这很棒。这使您可以从另一个项目添加文件,并且编辑文件也会在原始项目中进行编辑。
我想使用此功能使一个配置文件(命名为 Shared.config)存在于解决方案中的所有项目中。并且让该文件始终保持相同。
解决方案
|
|- 项目1
|
- Shared.config [物理]
|- 项目2
|
- Shared.config [链接]发布后,文件确实出现在所有已发布的项目中,因此没有问题。
但是,在发布之前(在构建期间进行开发),链接的文件实际上不存在。尝试在 Windows Explorer 中查看该文件表明该文件不在项目目录中。Visual Studio只会使它在解决方案浏览器中看起来像存在于那里。 (尽管在构建过程中,可能会将链接项复制到 bin 目录; 但我不想从 bin 目录中使用 / 访问文件。)
现在这会导致一些问题。在发布项目之前尝试打印
System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("Shared.config"))
将失败,因为 Shared.config 在项目根目录中尚不存在。我想要做的事情,并需要您的帮助是:
- 在构建过程中,我想将所有链接的文件从原始位置复制到目标位置。
通常情况下,如果目录中已经包含具有相同名称的文件,则 VS 不允许您在该目录中创建链接项。
但是,我已经测试了先创建一个链接项,然后使用Windows资源管理器将原始文件复制到目标目录,看到Visual Studio可以正常工作。解决方案资源管理器仅隐藏物理文件,并显示链接项。(即使在解决方案资源管理器中单击“显示所有文件
”)。
解决方案:
|
|- 项目1
|
- Shared.config [物理]
|- 项目2
|
- Shared.config [链接]
|
- Shared.config [物理,在构建期间复制到此处,在解决方案资源管理器中不可见]
这正是我想要的!尝试编辑文件时,Visual Studio将打开“链接项”。并在构建时,将复制物理文件到目标目录,以便代码尝试访问它。
现在该如何做呢? 应该使用构建事件完成吗?如果是这样,我怎样才能说“将所有链接文件的原始文件都复制到它们的目标目录”呢?