先に進む前に、この InternalsVisibleTo属性を確認しましたが、機能していません。
したがって、タイトル
さて、私は次のようなものを使用していた私のプロジェクトの作業バージョンを持っていました。
[assembly: InternalsVisibleTo("Stuff.Test.Support, PublicKey="0024000004800000940000000302000000240000525341310004000001000100d158cd56401c3d90b52ca1a5f273d608c3ce12aaa21385b0f4ad7dc1b747e45ee1f1771c104c52cb4da1b587ae38b6d36fa1d8e8f14003c42f700bc62ef2ec04b231c5d930e4bc3691aa1ef7b6713926316d4be1165ede086e94190b44edd4ad0d024230ae6eb9deb728b00d71d1d468b20a9bb78f242bd6c41e640c2e5c0cd5")]
アクセスしたい内部のものを含むProperties/AssemblyInfo.csファイル。チェックインする前にそれは働いていました。しかし、Team Foundation IDK WTFでのマージは間違っていますが、AssemblyInfo.csのように属性は表示されませんが、ファイルに何も変更されていないことを確認しましたが、それでも"innaccessable due to its protection level."
エラーが発生します。(Gama Radiation?Sunspot?バグをtweek動作するコードから動作しないコードにトレーニングする小さな邪悪なノーム笑)
リフレクションを使用して個々のインスタンスを追加してみました...
Assembly Core = Assembly.LoadFile("C:\Stuff.Internal.Core\bin\Debug\Stuff.Internal.Core.dll");
Object AssmWithIdentifier = Core.CreateInstance("AssemblyWithIdentifer", false);
私がこれを試みるとき、私は得ます'Stuff.Internal.AssemblyWithIdentifer' is inaccessible due to protection level.
そうでなければ、私が内部のものに関係していることをコメントアウトすると、私のプロジェクトはうまくコンパイルされます。
RedGatesReflectorで「PublicKey」を再確認しました
また、privateObjectsを使用してその方法でメソッドにアクセスしようとしましたが、どのように試しても、内部で何もインスタンス化できません。
また、新しいプロジェクトを追加し、参照をコンパイルして実際に機能するようにしましたが、その後、新しいプロジェクトを作成し、「Stuff.Test.Support」プロジェクトにすべてのものを追加して、参照などを含めようとしました。アクセスしたいプロジェクト内のAssemblyInfo.csに追加しますが、コンパイルしようとすると同じエラーが発生します"innaccessable due to its protection level."
編集:assembly: InternalsVisibleTo
アセンブリをグローバルに管理し、この質問の冒頭で示した属性
の例と同様の方法でいくつかの属性が設定されているsharedAssembly.csを使用していることを忘れました。私の例では目立たないものである場合は、StrongNamedアセンブリも使用しています。