7

先に進む前に、この 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アセンブリも使用しています。

4

2 に答える 2

4

ワークフロー定義が不一致を引き起こしていたことが判明しました。それでも理由を理解しようとしています.....
誰かが私から+1を得る理由を説明する何かへのリンクを提供できれば。

于 2010-08-18T17:04:22.003 に答える
2

1)InternalsVisibleToが正しく設定されている場合、「フレンド」からインスタンス化するためにリフレクションは必要ありません。ctorなどを直接使用できます。VS IDEが、内部がターゲットプロジェクトに実際に表示されているかどうかについて、より迅速なフィードバックを提供できるように、このルートを使用します。

2)後で表示されるエラーメッセージに従って、InternalsVisibleTo( "Stuff.Test.Support")を試しましたか?

于 2010-08-17T16:32:48.030 に答える