【问题标题】:New .csproj format - How to specify entire directory as "linked file" to a subdirectory?新的 .csproj 格式 - 如何将整个目录指定为子目录的“链接文件”?
【发布时间】:2017-08-21 15:19:40
【问题描述】:

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

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

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

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

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

我尝试了什么

  1. &lt;EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\*.cs" /&gt;
  2. &lt;EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\*" /&gt;
  3. &lt;EmbeddedResource Include="..\..\..\Demo\*.cs" Link="Resources\" /&gt;

前两个仅创建一个链接文件(分别具有确切的名称 *.cs*)。第三个只是出错了。

有没有办法将 globbing 与链接文件结合到目标项目中的特定位置?如果没有,如何在不知道有多少或名称的情况下链接目录中的所有文件?

【问题讨论】:

    标签: c# msbuild visual-studio-2017 csproj .net-standard


    【解决方案1】:

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

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

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

    它是通过this pull request 引入的,这可能是目前最好的文档。

    【讨论】:

    • 我将如何指定MinimumVisualStudioVersion 来强制执行此操作?我尝试使用this script 来查找我的版本(15.3.26730.12),但是当我将此值放入解决方案文件时,VS 2017 15.3 不会打开它。也尝试了15.3,但这也不起作用。考虑到 15.3 的最低要求,这似乎是一个合理的补充。在某处是否有这些版本号的列表?
    • 目前不太可能。问题是您不仅需要 15.3,还需要 2.0.0 SDK(不包含在 15.3 中)。 github.com/Microsoft/msbuild/issues/2350
    • .NET Core SDK 2.x 包含在更高版本的 VS(例如 15.7.2)中,因此您可以获得合适的 .NET Core SDK 版本,但应用最新的 VS 2017 更新,前提是这是您的选择。 - @martin-ullrich 您刚刚为我们节省了大量工作/风险!谢谢!
    【解决方案2】:

    我得到了这个对我有用的东西(将外部目录中的所有 svg 文件链接到解决方案子文件夹),并带有来自 site 的提示。只有%(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>
    

    【讨论】:

      猜你喜欢
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多