У меня есть многоцелевой (.NET 471 + Standard2.0) пакет NuGet, который содержит класс, который будет использоваться несколькими приложениями. Я хотел бы преобразовать пространство имен с помощью токена $ RootNamespace $, чтобы экземпляр файла в приложении-потребителе использовал то же пространство имен, что и приложение-потребитель.
Я сделал то, что изложено здесь:
https://docs.microsoft.com/en-us/nuget/create-packages/source-and-config-file-transformations
Однако преобразованный файл никогда не попадает в приложение-потребитель. Я включил фиктивный класс без применения преобразования, и он успешно устанавливается в приложение-потребитель.
Исходный код:
TransformationTester.cs.pp
namespace $RootNamespace$
{
public static class TransformationTester
{
public static string foo = "bar";
}
}
TesterNoTransformation.cs
namespace abc
{
public static class TesterNoTransformation
{
public static string foo = "bar";
}
}
Project.csproj
<ItemGroup>
<None Remove="TransformationTester.cs.pp" />
</ItemGroup>
<ItemGroup>
<Content Include="TransformationTester.cs.pp" />
<Content Include="TesterNoTransformation.cs" />
</ItemGroup>
Опубликован пакет NuGet (только соответствующие файлы)
-content
-TesterNoTransformation.cs
-TransformationTester.cs.pp
-contentFiles
-any
-net471
-TesterNoTransformation.cs
-TransformationTester.cs.pp
-netstandard2.0
-TesterNoTransformation.cs
-TransformationTester.cs.pp
-Project.nuspec
В Project.nuspec
<contentFiles>
<files include="any/net471/TransformationTester.cs.pp" buildAction="Content" />
<files include="any/netstandard2.0/TransformationTester.cs.pp" buildAction="Content" />
<files include="any/net471/TesterNoTransformation.cs" buildAction="Content" />
<files include="any/netstandard2.0/TesterNoTransformation.cs" buildAction="Content" />
</contentFiles>
После установки пакета TesterNoTransformation.cs запускается в потребляющем приложении, а TransformationTester.cs - нет.
Есть мысли? Я боролся с этим сегодня.