6

我有使用 BouncyCastle 的 ac# 程序。如果我插入对 iTextSharp 的引用,编译器会生成两个引用中已经存在的类的许多错误。我已经指定了所有的命名空间,但它并没有改变任何东西。例子:

 Org.BouncyCastle.X509.X509Certificate certCopy = DotNetUtilities.FromX509Certificate(oCertificato);

如何同时使用 BouncyCastle 和 iTextSharp?

4

2 回答 2

1

就像@franco-de-giorgi 说的那样。向库中添加别名。

我只是在写一个完整的答案,因为我必须了解什么是别名以及如何添加和别名

转到您的参考资料并转到 BouncyCastle 上的属性,然后将全局更改为您的个人别名:

在此处输入图像描述

然后在您的班级中使用外部别名来引用您的引用(而不是使用)

//using Org.BouncyCastle.Crypto.Parameters;
extern alias Merged;

在您的课程中添加您的别名

new Merged::Org.BouncyCastle.OpenSsl.PemReader
于 2021-06-11T13:21:47.507 回答
0

TL;DR:使用 PackageReference 的Aliases属性*.csproj并将别名添加到受影响的*.cs文件:

<PackageReference Include="PackageAffectedByConflict" Aliases="AltGlobalNamespace" />
extern alias AltGlobalNamespace;

using AltGlobalNamespace.ConflictedName;

根据微软的 NuGet 文档

在极少数情况下,不同的包将包含同一命名空间中的类。从 NuGet 5.7 和 Visual Studio 2019 Update 7 开始,相当于 ProjectReference,PackageReference 支持别名。默认情况下不提供别名。指定别名时,来自带注释的包的所有程序集都需要使用别名引用。

该文档还链接了GitHub 上的示例,展示了如何使用该Aliases属性:

PackageReferenceAliasesExample.csproj

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>
  
    <ItemGroup>
        <PackageReference Include="NuGet.Versioning" Version="5.8.0" Aliases="ExampleAlias" />
    </ItemGroup>

</Project>

Program.cs

extern alias ExampleAlias;
using System;

namespace PackageReferenceAliasesExample
{
    class Program
    {
        static void Main(string[] args)
        {
            var version = ExampleAlias.NuGet.Versioning.NuGetVersion.Parse("5.0.0");
            Console.WriteLine($"Version : {version}");
        }
    }
}
于 2021-10-28T15:34:48.813 回答