私はいくつかの機能を実行することを私の顧客のためにいくつかのC#のDLLを用意しました。
同じdllも使用しています。
私は彼に利用可能ないくつかの方法と私に利用可能なすべての方法を作ることができます。
おかげで、
dllメソッドへのアクセス
答えて
は、単に二つのプロジェクトをコンパイルし、共有コードベース
を使用してください。 1つには、顧客に提供するDLLのソースが含まれ、もう1つにはすべてのソースが含まれています。
- 利点:彼らはあなた自身のために残しておきたいソースのどれを見ていない、とあなたは特別なホスティングの任意の並べ替えを設定する必要はありません - ちょうどそれらにDLLを送信
- 短所:あなたがしなければなりませんコードベースをフォーク可能にするための余分な作業。このようなリファクタリングを行うには、大きな開発投資が必要かもしれません。
は、彼らがアクセスを許可されているコードにアクセスするために、顧客のためのWebサービスを提供するWebサービス
を提供します。
- 利点:ソースがまったく表示されません。
- 短所:コードによっては、セキュリティを最大限に高めるために多くの作業が必要になることがあり、パフォーマンスを上げることができない可能性があります。おそらくこれらは大きな懸念ではないので、簡単かもしれません。また、これを機能させるために専用ホスティングを設定する必要があります。
マークを使用すると、DLL
internal
- 共有DLLで
InternalsVisibleTo
属性を使用します - 共有DLLに
[assembly: InternalsVisibleTo]
を追加
- 利点:クライアントはリフレクターを経由して、完全なソースコードにアクセスする必要があります:これは
- デメリットをコーディングする非常に簡単なソリューションです。コードを難読化するか、コードをリバースエンジニアリングすることを合法的に禁じるライセンス契約を設定することで、これを軽減できます。
あなたは同じコードベースからのライブラリの2つのバージョンをコンパイルする#define
ようC# preprocessor directivesを使用することができます。
お客様のお客様に1つのバージョンを出荷し、他のバージョンはご自身で保管してください。
アセンブリの2つのバージョンをコンパイルする必要があります。あなたがあなたのcutomerに配布するバージョンは、あなたがアクセスしたくないメソッドを完全に除外する必要があります。そうしないと、メソッドを隠す方法にかかわらず、Reflectionからアクセスできます。これらのような答えに
あなたは何もしていません:)企業はしばしばライセンス契約によってこの問題を論争することができます。 –
もちろん、顧客が私たちのコードを見ることができても、あまりにも多くの状況に遭遇しました。 –
- 1. javaのdllメソッドへのアクセス
- 2. DLLへの拡張メソッド
- 3. DRbメソッドへのアクセス
- 4. エクスポートされたdll関数からのdllのグローバルデータへのアクセス
- 5. メソッド "run()"の "GeoPoint"へのアクセス
- 6. メソッドの親オブジェクトへのアクセス
- 7. UITableViewの "default"メソッドへのアクセス
- 8. オブジェクトからメソッドへのアクセス
- 9. メソッド属性メソッドメソッドへのアクセス
- 10. 別のクラスからのメソッドへのアクセス
- 11. 別のメソッドの結果へのアクセス
- 12. Rubyモジュール内の他のメソッドへのアクセス
- 13. .NETのコレクションとオブジェクトのメソッドへのアクセス
- 14. C内のWINAPIメソッドへのアクセス
- 15. 継承エラー後のメソッドへのアクセス
- 16. FoxproからのCOMメソッドへのアクセス
- 17. livewallpaperサービスクラス内の子メソッドへのアクセス
- 18. 静的Javaメソッドのクラスへのアクセス
- 19. プライベートクラスからパブリッククラスのメソッド/フィールドへのアクセス
- 20. バリデーション@ScriptAssertで静的メソッドへのアクセス
- 21. wash_out gemエラーsoap_configメソッドへのアクセス
- 22. C#クラス:インスタンスによるメソッドへのアクセス
- 23. C++:祖父母メソッドへのアクセス
- 24. GoogleカレンダーAPIメソッドへのアクセス方法
- 25. Javaオブジェクト配列Foreachメソッドへのアクセス
- 26. jQuery 'closure'から外部メソッドへのアクセス
- 27. .net4.0 dllで.net2.0 dllにアクセス
- 28. dllへのウェブサイト
- 29. Xamlのプロジェクト/ DLL間でのリソースへのアクセス
- 30. 非ネットdllの関数またはメソッドにアクセスする
+1を(あなたのアセンブリに署名したくないと仮定)
はSO – stijn
グレート答えのパワーに位置しています。私はそれが最も簡単だと思うので、私は 'InternalsVisibleTo'を選択します。ありがとう – Igal