更新:2007 年 11 月

错误消息

已授予对“AssemblyName1”的友元访问,但输出程序集的名称为“AssemblyName2”。请尝试添加对“AssemblyName1”的引用,或者更改输出程序集的名称以使其匹配。

友元访问是一种新的公共语言运行库 (CLR) 功能,它可以使一个程序集看到另一个程序集的非公共类型。当授予友元访问的程序集为被授予程序集指定错误的名称时,将会出现此错误。有关更多信息,请参见友元程序集(C# 编程指南)

示例

下面的代码示例序列将生成 CS0281。

按照下面的方式生成用于创建具有强名称的程序集的文件:

  • sn -d CS0281.snk

  • sn -k CS0281.snk

  • sn -i CS0281.snk CS0281.snk

  • sn -pc CS0281.snk key.publickey

  • sn -tp key.publickey

 复制代码
// CS0281.cs
// compile with: /target:library /keyfile:CS0281.snk
public class A {}
 复制代码
// CS0281_b.cs
// compile with: /target:library /keyfile:CS0281.snk /reference:CS0281.dll
[assembly:System.Runtime.CompilerServices.InternalsVisibleTo("CS0281 , PublicKey=00240000048000009400000006020000002400005253413100040000010001004b2d4d56af7c50be2fcbbf97cb880b9e73ad84467a587191fef63aadc118a96cecf9d508cd679c907b6e20f71684300bdc2c0a851019af0c96b29bf8f1339753276041aefd67db46139e6348b3a12f29537b4dc6c2c19829df2c9ed6803f3c63c3b84cfa2728849386aea575c543a5f70fa85793d2946f15f7fe1ccb0c5e8fe0")]
class B : A {}

下面的示例生成 CS0281。

注意,此示例创建的输出文件与第一个示例创建的输出文件同名。若要解决此问题,请不要更改组件的程序集属性并添加类 C。

 复制代码
// CS0281_c.cs
// compile with: /target:library /out:CS0281.dll /keyfile:CS0281.snk /reference:CS0281_b.dll
// CS0281 expected
[assembly:System.Reflection.AssemblyVersion("3")]
[assembly:System.Reflection.AssemblyCulture("en-us")]
class C : B {}
public class A {}