C#ソリューションには3つのプロジェクトがあります。
署名には、パブリックおよび内部インターフェイスがあります。また、それは持っています
[Assembly: InternalsVisibleTo("Structures")]
[Assembly: InternalsVisibleTo("Tests")]
assemblyInfo.csの。
Structuresにはパブリッククラスと内部クラスがあり、
[Assembly: InternalsVisibleTo("Tests")]
assemblyInfo.csの。
テストには次のソースがあります:
<packages>
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" />
<package id="NUnit" version="2.6.4" targetFramework="net45" />
<package id="NUnitTestAdapter" version="1.2" targetFramework="net45" />
</packages>
packages.configのNuGetパッケージとして。
Signaturesの内部インターフェイスとStructuresの内部クラスの単体テストを作成しました。実行し、次の結果がありました:例外:
Type Signatures.InterfaceXはDynamicProxyに表示されません。アクセスできない型のプロキシを作成することはできません。型をpublicまたはinternalにして、アセンブリを[Assembly:InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]属性でマークします。
論理的なようです。 [Assembly:InternalsVisibleTo( "InternalsVisible.DynamicProxyGenAssembly2")]を署名および構造プロジェクトのアセンブリ情報に追加しました。実行し、次の結果がありました:例外:
アセンブリ 'DynamicProxyGenAssembly2、Version = 0.0.0.0、Culture = neutral、PublicKeyToken = null'のタイプ 'Castle.Proxies.IReminiscenceableDataTableProxy'はアクセスできないインターフェイスを実装しようとしています。
これは助けるためでしたが、しませんでした。例外メッセージのみを変更します。
私の問題を修正するには?
推奨される修正メッセージでは、アセンブリ名にconst/staticフィールドを使用しています。
[Assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]
アセンブリ名に対応しない文字列を使用しました:
[Assembly: InternalsVisibleTo("InternalsVisible.DynamicProxyGenAssembly2")]
次のように変更します。
[Assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
エラーメッセージで実際のアセンブリ名(InternalsVisibleTo
に表示されるはずです)を確認できます。
アセンブリから「Castle.Proxies.IReminiscenceableDataTableProxy」と入力します 'DynamicProxyGenAssembly2(...)