Msbuild PackageReference的条件包含

Msbuild PackageReference的条件包含,msbuild,Msbuild,我们需要为发布版本包含StackExchange.Redis.strong名称,但为调试版本包含StackExchange.Redis。我们的项目是.NET4.71 我试图通过以下方式在我们的csproj中实现这一点: <Choose> <When Condition="'$(Configuration)' == 'Release'"> <ItemGroup> <PackageReference Inc

我们需要为发布版本包含StackExchange.Redis.strong名称,但为调试版本包含StackExchange.Redis。我们的项目是.NET4.71

我试图通过以下方式在我们的csproj中实现这一点:

  <Choose>
    <When Condition="'$(Configuration)' == 'Release'">
        <ItemGroup>
            <PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.6" />
        </ItemGroup>
    </When>
    <Otherwise>
        <ItemGroup>
            <PackageReference Include="StackExchange.Redis" Version="1.2.6" />
        </ItemGroup>
    </Otherwise>
  </Choose>
要么我误解了Choose的工作原理,要么我错过了其他东西?你能做我想做的吗?如果没有,还有别的办法吗

TVMIA


Adam。

您是否有使用非strongname软件包的依赖项?另外请注意,如果在配置之间切换,VS不会重新恢复。感谢您的回复。我们需要非strong名称ddll吗?这是一个很好的问题,我来查一查。如果我们只需使用strong命名的程序集就可以解决问题。仍然对它为什么不工作感到困惑:-/“还要注意,如果在配置之间切换,VS不会重新恢复”-抱歉,我不明白。你能解释一下吗?换句话:你的包图中有强名称和普通包吗?如果另一个包依赖它,则可能发生这种情况。明白了,谢谢,我会跟进。而犯罪方是StackExchange.Redis.Extender,其中包括StackExchange.Redis,无论您是否想要它。由于似乎没有办法将一个名称的程序集重定向到另一个名称(即StackExchange.Redis->StackExchange.Redis.Strongname),因此我们没有桨了:-(无论如何,感谢您的帮助)。
Error   CS0433  The type 'ConnectionMultiplexer' exists in both 'StackExchange.Redis.StrongName, Version=1.2.1.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46' and 'StackExchange.Redis, Version=1.2.6.0, Culture=neutral, PublicKeyToken=null'