在.csrpoj
文件中,如果我有
<Compile Include="c:\path\File1.cs">
<Link>Dir1\File1.cs</Link>
</Compile>
然后,Visual Studio将该文件显示为解决方案资源管理器中Dir1
文件夹下的快捷方式。
如果我有
<Compile Include="c:\path\*.cs"></Compile>
然后,所有.cs
个文件都显示为顶级解决方案资源管理器中的快捷方式:
有没有办法在某个文件夹中包含所有文件,然后在子文件夹下显示?省略Link
元素中的文件名不起作用:
<Compile Include="c:\path\*.cs">
<Link>Dir1\</Link>
</Compile>
文件仍显示在顶层。
如何在文件夹中包含所有文件并仍然使用Link元素?我需要这个的原因是,我需要包含来自多个文件夹的文件,其中一些文件具有相同的名称。顶级的两个文件不能具有相同的名称。
实现这一目标的其他任何方式?
我是Visual Studio平台的新手。提前为问题中的任何愚蠢道歉。
答案 0 :(得分:8)
<Content Include="..\..\SomeDirectory\**\*.xml">
<Link>SomeLinkDirectoryOfYourChoosing\%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
答案 1 :(得分:5)
为了别人的缘故,这里的答案加上Dean和Miserable Variable的评论,我觉得这很有用:
我有两个项目,我需要在另一个项目中包含* .xsd,不需要复制文件或每次将新的XSD添加到第一个时都必须更新引用的csproj文件。
解决方案是将以下内容添加到csproj文件
<Content Include="..\BusinessLayer\Schemas\*.xsd">
<Link>Contract\Schemas\xxx.xsd</Link>
</Content>
注意xxx.xsd,你必须在Link
元素中给出一个虚拟文件名。它只是被取代了。
此外,您可以包含所有子文件夹:
<Content Include="..\BusinessLayer\Schemas\**\*.xsd">
<Link>Contract\Schemas\ThisTextDoesntMatter</Link>
</Content>
所有类型的文件(对于从第三方中提取CSS / JS / Style文件夹很有用):
<Content Include="..\PresentationLayer\CustomerStyle\**\*.*">
<Link>CustomerStyle\placeHolder</Link>
</Content>
答案 2 :(得分:1)
其他人建议将Link
属性与占位符一起使用,这确实有效。但是,Microsoft已实现了一个名为LinkBase
的新属性(不在我的任何代码完成建议中),如下所示。
<Compile Include="..\SomeDirectory\*.cs" LinkBase="SomeDirectoryOfYourChoosing" />
来源:
答案 3 :(得分:0)
包括子文件夹:
<ItemGroup>
<Compile Include="..\SomeExternalFolder\**\*.cs" LinkBase="YourProjectFolder" />
</ItemGroup>