繁体   English   中英

新的.csproj格式 - 如何将整个目录指定为“链接文件”到子目录?

[英]New .csproj format - How to specify entire directory as “linked file” to a subdirectory?

使用新的.csproj格式(以及旧格式),可以将文件添加到项目文件夹之外的链接:

 <EmbeddedResource Include="..\..\..\Demo\Sample.cs" Link="Resources\Sample.cs" />

也可以使用glob模式来包含多个文件:

<EmbeddedResource Include="..\..\..\Demo\*.cs" />

但是你如何将两者结合起来呢?

我试过的

  1. <EmbeddedResource Include="..\\..\\..\\Demo\\*.cs" Link="Resources\\*.cs" />
  2. <EmbeddedResource Include="..\\..\\..\\Demo\\*.cs" Link="Resources\\*" />
  3. <EmbeddedResource Include="..\\..\\..\\Demo\\*.cs" Link="Resources\\" />

前两个只创建一个链接文件(分别名称为*.cs* )。 第三个只是出错了。

有没有办法将globbing和链接文件组合到目标项目中的特定位置? 如果没有,我如何链接目录中的所有文件而不知道他们的名字有多少或者是什么?

虽然以前可以在使用glob扩展时使用%(RecursiveDir)元数据( Link="Resources\\%(RecursiveDir)%(Filename)%(Extension)" ),但2.0.0版本的.NET Core SDK允许使用新的LinkBase元数据:

<EmbeddedResource Include="..\..\..\Demo\**\*.cs" LinkBase="Resources" />

请注意,除了最近发布的VS 2017 15.3之外,您还需要安装2.0.0(并确保没有global.json选择较低版本)。

它引入了这个拉取请求 ,这可能是目前最好的文档。

我得到了这个为我工作(将外部目录中的所有svg文件链接到解决方案子文件夹),并提供了来自此站点的提示。 只有%(Parent.Filename)对我不起作用(得到CS1508),所以我用%(Filename)%(Extension)替换。

<ItemGroup>
    <Parent Include="C:\Path\To\My\SVG\Dir\*.svg" />
    <EmbeddedResource Include="@(Parent)">
        <Link>Resources\%(Filename)%(Extension)</Link>
    </EmbeddedResource>
</ItemGroup>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM