我可以在编译元素内同时使用通配符和链接元素吗?
-
30-09-2019 - |
题
在里面 .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>
这些文件仍然显示在顶层。
如何将所有文件包括在文件夹中并仍然使用链接元素?我需要的原因是,我需要包括来自多个文件夹的文件,其中一些文件具有相同的名称。最高级别的两个文件不能具有相同的名称。
有其他方法可以实现这一目标吗?
我是Visual Studio平台的新手。事先为问题中的任何愚蠢道歉。
解决方案
<Content Include="..\..\SomeDirectory\**\*.xml">
<Link>SomeLinkDirectoryOfYourChoosing\%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
其他提示
为了别人的目的,这是答案以及Dean和痛苦变量的评论,我发现这很有用:
我有两个项目,我需要在另一个项目中包括 *.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/样式文件夹),with:
<Content Include="..\PresentationLayer\CustomerStyle\**\*.*">
<Link>CustomerStyle\placeHolder</Link>
</Content>
其他人建议使用 Link
与占位符的属性,这确实有效。但是,微软已经实现了一个新属性(在我的任何代码完成建议中都不是) LinkBase
, ,如下所示。
<Compile Include="..\SomeDirectory\*.cs" LinkBase="SomeDirectoryOfYourChoosing" />
资料来源:
包括子文件夹:
<ItemGroup>
<Compile Include="..\SomeExternalFolder\**\*.cs" LinkBase="YourProjectFolder" />
</ItemGroup>
不隶属于 StackOverflow