新的 .csproj 格式 - 如何将整个目录指定为子目录的 "linked file"?
New .csproj format - How to specify entire directory as "linked file" to a subdirectory?
使用新 .csproj
格式(以及旧格式),可以将文件添加为 linked 到项目文件夹之外:
<EmbeddedResource Include="..\..\..\Demo\Sample.cs" Link="Resources\Sample.cs" />
也可以使用 glob 模式来包含多个文件:
<EmbeddedResource Include="..\..\..\Demo\*.cs" />
但是如何将两者结合起来呢?
我试过的
<EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\*.cs" />
<EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\*" />
<EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\" />
前两个仅创建一个 linked 文件(名称分别为 *.cs
和 *
)。第三个简单地出错了。
有没有办法将 globbing 与 linked 文件结合到目标项目中的特定位置?如果没有,我怎么能 link 目录中的所有文件而不知道有多少或它们的名字是什么?
虽然以前在使用 glob 扩展 (Link="Resources\%(RecursiveDir)%(Filename)%(Extension)"
) 时使用 %(RecursiveDir)
元数据是可能的,但 2.0.0 版的 .NET Core SDK 允许使用新的 LinkBase
元数据:
<EmbeddedResource Include="..\..\..\Demo\**\*.cs" LinkBase="Resources" />
请注意,除了最近发布的VS 2017 15.3之外,您还需要安装2.0.0(并确保没有global.json
选择较低版本)。
它与 this pull request 一起引入,这可能是目前最好的文档。
我在这个 site 中得到了提示(将外部目录中的所有 svg-files 链接到 solution-subfolder)。只有 %(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>
使用新 .csproj
格式(以及旧格式),可以将文件添加为 linked 到项目文件夹之外:
<EmbeddedResource Include="..\..\..\Demo\Sample.cs" Link="Resources\Sample.cs" />
也可以使用 glob 模式来包含多个文件:
<EmbeddedResource Include="..\..\..\Demo\*.cs" />
但是如何将两者结合起来呢?
我试过的
<EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\*.cs" />
<EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\*" />
<EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\" />
前两个仅创建一个 linked 文件(名称分别为 *.cs
和 *
)。第三个简单地出错了。
有没有办法将 globbing 与 linked 文件结合到目标项目中的特定位置?如果没有,我怎么能 link 目录中的所有文件而不知道有多少或它们的名字是什么?
虽然以前在使用 glob 扩展 (Link="Resources\%(RecursiveDir)%(Filename)%(Extension)"
) 时使用 %(RecursiveDir)
元数据是可能的,但 2.0.0 版的 .NET Core SDK 允许使用新的 LinkBase
元数据:
<EmbeddedResource Include="..\..\..\Demo\**\*.cs" LinkBase="Resources" />
请注意,除了最近发布的VS 2017 15.3之外,您还需要安装2.0.0(并确保没有global.json
选择较低版本)。
它与 this pull request 一起引入,这可能是目前最好的文档。
我在这个 site 中得到了提示(将外部目录中的所有 svg-files 链接到 solution-subfolder)。只有 %(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>