3

いくつかのパブリッククラスとインターフェイスのみを公開する多くの内部機能を備えたC#ラ​​イブラリがあります。このコードを複数のプロジェクト間で共有したいと思います。各プロジェクトでは、内部クラスをサブクラスで拡張する必要がある場合があります。

共通のライブラリを作成するために、これらすべてのクラスを公開するというアイデアは好きではありません。逆コンパイルが簡単になりすぎて、デザインが壊れてしまうのではないかと思います。

ソースコードのコピーを作成し、それらのファイルをプロジェクト間で同期させる唯一の実際のオプションはありますか?または、コードを共有しながら、プロジェクトごとに1つのライブラリを取得して、目的のパブリックインターフェイスとクラスのみを公開する方法はありますか?

VisualStudio2010を使用しています。

アップデート

逆コンパイルと「プライベート」アクセスに関する説明をありがとう。いくつかの入力ライブラリに難読化ツールを適用して、それらのパブリック接続さえも難読化することを検討できると思います。

設計の観点からは、答えは間違いなくフレンドアセンブリを使用することのようです。

4

5 に答える 5

8

フレンドアセンブリの実行を検討することをお勧めします。

http://msdn.microsoft.com/en-us/library/0tke9fxk(v=vs.80).aspx

[assembly:InternalsVisibleTo("someassembly")]
于 2012-02-29T00:35:56.600 に答える
3

新しいプロジェクトを作成します。ファイル>追加>既存。既存のコードファイルを選択します。[開く]ボタンのドロップダウンを押して、[リンク]を選択します。

クラスを内部vsパブリックにすることは、逆コンパイルされる能力とはまったく関係がありません。

于 2012-02-29T00:37:18.890 に答える
2

「フレンド」アセンブリを探しています:http: //msdn.microsoft.com/en-us/library/0tke9fxk (v = vs.80).aspx

于 2012-02-29T00:37:00.257 に答える
2

これは、アセンブリのInternalsVisibleToAttributeを使用して実行できます

于 2012-02-29T00:37:19.780 に答える
0

簡単な逆コンパイルにさらされすぎると思います

アセンブリ内のプライベートクラスでさえ、簡単に逆コンパイルしてパブリック実装を作成するために使用できるため、ショックを受けます。

「デザインを壊す」は別の問題です。別々のプロジェクトからこのコードを使用したい場合は、それらを公開するよりも、まさに正しいことです。それらを公開したくない場合は、このプロジェクトが実際に外部に公開したいインターフェースを考えて、それでも必要なことを達成します...そしてそのAPIを構築し公開します。

于 2012-02-29T00:43:13.540 に答える