@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

C# クラスライブラリのソースを表示できなくするには

1
投稿者投稿内容
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 2009-02-16 17:57
C# でクラスライブラリを作り、bin\Release にできた DLL を同じくC# で作った呼び出し元となる Windows アプリケーションのプロジェクトの参照に追加して問題なく呼び出せることは確認したのですが、クラスライブラリのメソッドにブレークポイントを置いて、止まったところでステップインするとクラスライブラリのソースが表示されてしまいます。

この DLL はバイナリのみ配布したいと考えているので、上のような使い方をされたときにソースが表示されたくないのですが、表示されないようにする方法はあるのでしょうか?

bin\Release と bin\Debug の違いってまさにここかなぁと思ったんですが・・・
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2009-02-16 18:16
デバッグ時にソースが表示されるのは、ソースが手元にあり、且つ IDE がソースの場所を知っているからです。
「プロジェクト」を参照するのではなく、「DLL」を直接参照した場合はデバッグ時にも (通常は) ソース表示されません。

DLL 自体にソースが含まれるわけではないので、「プロジェクト」を参照しようと「DLL」を直接参照しようと、DLL のみの配布時にはソースの表示はできません。
_________________
C#と諸々
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2009-02-16 18:59
最近の逆コンパイラは性能が高いので、ほぼ元通りのコードを得られます。
対策として考えられるのは以下のような方法が考えられるかと。

1.Dotfuscatorのようなコード難読化ツールを使用するか、あるいはコードを暗号化するようなツールを使用する。

2.重要なコードはWEBサービスとして提供し、ユーザのコンピュータにはインストールしない。
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 2009-02-16 19:41
早速の回答ありがとうございます。

>よこけんさん
他のマシンに呼び出す側の Windows アプリケーションのプロジェクトをコピーし、呼び出されるクラスライブラリは DLL だけをコピーし DLL 参照に加えたところ、クラスライブラリの bin\Release/Debug どちらの DLL もソース表示・ステップインされないことを確認しました。

>甕星さん
そうなんですか。今回配布を考えている DLL はそこまで徹底的に隠したい程ではないですが、隠したいときには教えていただいた情報を調べてみたいと思います。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-02-16 21:31
今移動中なので調べていませんが、メソッドの属性に「デバッガでステップインしない」ようにするものがあります。
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2009-02-16 22:47
引用:

Jittaさんの書き込み (2009-02-16 21:31) より:
今移動中なので調べていませんが、メソッドの属性に「デバッガでステップインしない」ようにするものがあります。


それは、下記のことでしょうけれども、今回の問題とは違うと思います。
http://www.atmarkit.co.jp/fdotnet/dotnettips/362stepthrough/stepthrough.html


今回のは「DLLを配布するだけでソースコードも読めちゃうの?」だと思いますので。
1

スキルアップ/キャリアアップ(JOB@IT)