簡體   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