首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让net-core项目包含自动生成的代码文件?

如何让net-core项目包含自动生成的代码文件?
EN

Stack Overflow用户
提问于 2020-01-15 01:15:33
回答 1查看 378关注 0票数 0

我有一个.net核心项目文件(*.csproj),如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <!-- Create RS.cs -->
  <ItemGroup>
    <ResourceGeneratorInputs Include="strings.resx" />
    <ResourceGeneratorOutputs Include="RS.cs" />
  </ItemGroup>
  <Target Name="GenerateTheResourceFile" 
        BeforeTargets="PrepareForBuild" 
        Inputs="@(ResourceGeneratorInputs)" 
        Outputs="@(ResourceGeneratorOutputs)">
    <Exec Command="ResourceStringGenerator.exe strings.resx RS.cs " />
  </Target>
</Project>

该项目有一个目标,它生成一个名为RS.cs的csharp代码文件,该文件也必须编译。

问题是文件生成得太晚了。生成引擎已经读取了项目目录中的文件列表,而忽略了RS.cs文件。

我曾尝试将BeforeTargets属性更改为各种其他目标,但都没有成功。(在这里描述:https://docs.microsoft.com/en-us/dotnet/core/tools/csproj#build-events)我也试过关闭文件的自动包含:

代码语言:javascript
复制
 <PropertyGroup>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
  </PropertyGroup>

制作我自己的要编译的文件列表。但这也不管用。生成RS.cs文件的时间仍然太晚。

新的项目文件格式似乎非常渴望获得文件列表,以至于似乎没有为自动生成的文件留出空间。

这里的工作是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 01:26:15

项目文件的静态部分总是在目标运行之前进行评估。但是,您也可以在目标中添加项目:

代码语言:javascript
复制
<Target Name="GenerateTheResourceFile" 
      BeforeTargets="PrepareForBuild" 
      Inputs="@(ResourceGeneratorInputs)" 
      Outputs="@(ResourceGeneratorOutputs)">
  <Exec Command="ResourceStringGenerator.exe strings.resx RS.cs " />

  <ItemGroup>
    <EmbeddedResource Include="strings.resx" Exclude="@(EmbeddedResource)" />
    <Compile Include="RS.cs" Exclude="@(Compile)" />
  </ItemGroup>
</Target>

“排除”部分确保如果文件在静态评估(即附加构建)过程中已被拾取,则不会添加两次。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59738719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档