【问题标题】:How to mark files of a folder as embedded resource with wildcards with the new project format?如何使用新项目格式将文件夹的文件标记为带有通配符的嵌入式资源?
【发布时间】:2019-08-13 13:57:17
【问题描述】:

我的场景很简单。 我有一个测试项目,我希望文件夹中的所有文件默认都标记为嵌入式资源。为了防止有人在这里犯错,我希望通过通配符自动完成

我看了这个问题,看起来很有希望。 MSBuild: Include a custom resource file as embedded resource

但是,这似乎不适用于新的 csproj 格式。有谁知道我应该做些什么不同的事情才能使用新格式?

我当前的代码是这样的:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <IsPackable>false</IsPackable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
        <PackageReference Include="Shouldly" Version="3.0.2" />
        <PackageReference Include="xunit" Version="2.4.0" />
        <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
        <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="3.2.1" />
        <PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="3.2.1" />
    </ItemGroup>


    <Target Name="BeforeBuild">
        <CreateItem Include="TestContent\*.cs">
            <Output ItemName="EmbeddedResource" TaskParameter="Include" />
        </CreateItem>
    </Target>

</Project>

【问题讨论】:

    标签: visual-studio msbuild csproj


    【解决方案1】:

    你可以试试这个脚本:

      <Target Name="MyCustomStep" BeforeTargets="BeforeBuild">
            <CreateItem Include="TestContent\*.cs">
                <Output ItemName="EmbeddedResource" TaskParameter="Include" />
            </CreateItem>
      </Target>
    

    新旧 csproj 格式的 BeforeBuild Target 存在差异。 (或者可能是.net core和.net framewrok的区别,这点不太清楚)

    我将msbuild verbosity 设置为Detailed 时的一些发现:

    1.对于使用旧 csproj 格式以 .net framework 为目标的项目:

    BeforeBuild 目标将准确执行CreateItem 任务。所以它适用于旧格式的项目文件。

    2.针对.net core使用新sdk格式的项目:

    BeforeBuild 目标似乎没有像我们预期的那样执行任务。

    定义在BeforeBuild 目标之前执行的Custom target 之后,它可以在我的机器上运行:

    【讨论】:

    • 嗯。是的。这个版本有效 - 至少是 Buildwise。但是,VS 不会将构建操作显示为 EmbeddedResource。您认为报告该错误的最佳地点是什么? github/msbuild 还是 VS 报告?
    • 对于这个问题,github/msbuild可以更合适。用更多细节更新答案:)
    • 非常感谢您的帮助和付出的努力 :)
    猜你喜欢
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多