在 Visual Studio 中,您可以执行Add
-> Existing Item
,然后Add as Link
从Add
下拉按钮中执行。
这很棒。这让您可以从另一个项目中添加一个文件,并且编辑该文件也会在原始项目中对其进行编辑。
我想使用此功能在一个解决方案中的所有项目中都存在一个配置文件(名为 Shared.config)。并让该文件始终相同。
解决方案
|
|- 项目一
|
- Shared.config [物理]
|- 项目 2
|
- Shared.config [链接]
发布后,该文件确实会出现在所有已发布的项目中,所以没有问题。
但是在发布之前(在构建开发期间)链接文件并不真正存在。尝试在 Windows 资源管理器中查看该文件证明该文件不在项目目录中。Visual Studio 只是让它看起来好像它存在于解决方案资源管理器中。(虽然在构建时,链接的项目可能被复制到bin
目录中;但我不想使用/访问目录中的bin
文件。)
现在,这会产生问题。在项目发布之前尝试打印System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("Shared.config"))
会失败,因为 Shared.config 尚不存在于项目根目录中。
我想做的,我需要你帮助的地方是:
- 我想 ON BUILD 将所有链接文件从原始位置复制到目标位置。
这将使 Visual Studio 拥有链接文件和原始文件的副本,以相同的名称存在于同一目录中。
通常,如果该目录已包含同名文件,VS 将不允许您在该目录中创建链接项。
但是,我首先通过创建链接项目进行了测试;然后使用 Windows 资源管理器将原始文件复制到目标目录,并查看 Visual Studio 是否正常。解决方案资源管理器只是隐藏了物理文件,而是显示了链接的项目。(即使您单击Show all files
解决方案资源管理器。)
解决方案
|
|- 项目一
|
- Shared.config [物理]
|- 项目 2
|
- Shared.config [链接]
|
- Shared.config [物理的,在构建期间复制到这里,对解决方案资源管理器不可见]
这正是我想要的!尝试编辑文件时,Visual Studio 将打开“链接项目”。并且在构建时,一个物理文件将被复制到目标目录,因此它存在于试图访问它的代码中。
现在我该怎么做?这应该通过 Build 事件来完成吗?如果是这样,我怎么说'将所有链接文件的原件复制到它们的目标目录?