当我使用“添加现有项目”对话框中的“添加为链接”选项将另一个Visual Studio 2012项目中的文件添加到当前项目时。文件链接很好地创建,一切都很好。
当我对相同 VS2012项目中的现有文件重复相同的技巧(但位于另一个文件夹中)时,将不会创建链接。 Visual Studio只是忽略了该操作。为什么这不可能?有没有解决方法,所以我可以添加文件链接到同一项目中的文件?
背景信息:我想使用NuGet包及其更新机制,但是NuGet只是将所有内容转储到文件夹结构中(比如'Scripts'和'Content'文件夹),我不想使用它们。我使用'libs'文件夹作为外部资料。但是当我移动NuGet导入的文件时,它会破坏更新机制,因此我想在“脚本”文件夹等中创建文件链接(在libs文件夹下面)。
我已经尝试手动编辑.csproj文件,但仍然忽略了链接定义。我能想到的唯一解决方案是为NuGet包创建另一个项目,并在我的其他项目中添加指向那些导入文件的链接,但在我看来这有点过分。
答案 0 :(得分:3)
这是不可能的。
csproj文件只是一个msbuild文件,告诉构建过程构成项目的文件和引用以及构建等方面的操作。
如果你看一下csproj文件放在一起的方式,你会注意到有ItemGroup元素。这些ItemGroup元素的一个功能是将文件组合在一起。在“文件组”中,每个项目(无论是标记为“编译”还是“无”或其他)都是指具有“包含”属性的文件,例如:包括= “FILENAME.EXT”。将文件添加到解决方案时,它将创建其中一个元素,并将Include属性适当地设置为相对于项目的文件路径。在它执行此操作之前,它会检查具有匹配路径的文件是否已在项目中,如果是,则忽略它。
所以你看,你要做的是添加一个重复的文件,VS不允许这样做。
- 编辑 -
现在,至于解决方法。如果你要使用符号链接,可以这样做。在命令窗口中,键入以下命令:
mklink Link Target
其中Link指定新的符号链接名称,Target指定新链接引用的路径(相对或绝对)。
然后,您应该可以根据需要将文件添加到项目中。
答案 1 :(得分:2)
您可以编辑.csproj文件。 例如,替换
<Content Include="fonts\fontawesome-webfont.woff" />
通过
<Content Include="fonts\fontawesome-webfont.woff" >
<Link>newPath\fonts\fontawesome-webfont.woff</Link>
</Content>
新路径将隐藏在解决方案资源管理器中,但会被复制(在VS2015 CTP6中测试)
答案 2 :(得分:-1)
Visual Studio与硬链接和软链接不兼容