EmbeddedResource не работает внутри Target - PullRequest
0 голосов
/ 03 октября 2019

У меня есть несколько файлов TypescriptCompile, которые я затем хочу встроить в мой .dll. Мне пришлось перейти на новый формат csproj, и теперь я не могу вставлять, находясь внутри цели.

Это работает:

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <TargetFramework>net472</TargetFramework>
   </PropertyGroup>
   <ItemGroup>
       <EmbeddedResource  Include="testFile.ts" />
   </ItemGroup>
</Project>

Пока это не так:

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <TargetFramework>net472</TargetFramework>
   </PropertyGroup>
   <Target Name="AddGeneratedToBuildOutput" BeforeTargets="CoreCompile">
       <ItemGroup>
           <PackageFiles Include="$(MSBuildProjectDirectory)\**\*.*;"/>
       </ItemGroup>
       <Message Text="The target is called: %(PackageFiles.FullPath)" Importance="high"/>
       <ItemGroup>
           <EmbeddedResource  Include="testFile.ts" />          
       </ItemGroup>
    </Target>
</Project>

Обратите внимание, что сообщение записывается и указанный файл находится в проекте, поэтому мы можем быть уверены, что цель вызывается.

Я уже пробовал другие цели вместо CoreCompile, но так как яиспользуя TypeScriptCompile, если я использую BeforeBuild, Build или ResolveReferences, я получаю ошибки компиляции, поскольку файлы .js еще не сгенерированы.

Я использую DotPeek JetBrains для проверки ресурсов и использую msbuild 15.0.

1 Ответ

0 голосов
/ 04 октября 2019

Решение этой проблемы здесь: https://github.com/microsoft/msbuild/issues/4778

...