NuGet源代码转换(C#)文件未安装在使用的应用程序中

时间:2018-11-15 23:10:49

标签: c# .net .net-core nuget nuget-package

我有一个多目标(.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不会。

有什么想法吗?我今天一直在为此奋斗。

0 个答案:

没有答案