- PR -

自作のクラスライブラリDLLの、第3者からの利用を制限するには?

投稿者投稿内容
bminor
会議室デビュー日: 2005/07/30
投稿数: 6
投稿日時: 2005-07-31 09:55
> ilmerge
> http://research.microsoft.com/~mbarnett/ilmerge.aspx
>
> でできますよ。

ILMerge試してみました。まだマネージコードのアセンブリ同士でしか確認していないのですが、これだと確かにやりたいことができそうです。こういう手があったのかと、、EULAもあるので、気をつけて試してみたいと思います。

いろいろとレスいただき、ありがとうございました。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-07-31 11:40
念のために言っておきますが。
.NETでは.exeも.dllと同じように参照することができます。
VS上で.exeを参照設定するのは(何故か)制限されていますが、プロジェクトファイルを直接編集すればその制限も回避できます。
ですからilmergeを使ったところで第三者はごく普通にライブラリを利用することができることになります。

[ メッセージ編集済み 編集者: Hongliang 編集日時 2005-07-31 11:42 ]
bminor
会議室デビュー日: 2005/07/30
投稿数: 6
投稿日時: 2005-07-31 12:12
> プロジェクトファイルを直接編集すればその制限も回避できます。

exeからプロジェクトファイルを生成することができるということでしょうか?
プロジェクトファイルとは、普通にVS.NETで作製したプロジェクトと思っていましたが、ちょっと感じが違うようですね。

もちろん、ILMergeでマージしてみたexeファイルを、VS.NETのプロジェクトから参照できない、というところまでは確認しています。

ILMergeは、インストールされたバイナリはILMerge.exeのみのようでしたが、ドキュメントには内部のライブラリの仕様が書かれています。直接利用できないライブラリの仕様がなぜ書かれているのか疑問に思いましたが、もし第三者が利用できるのであれば、なにか前提があるのかな、と。。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-07-31 12:48
引用:
exeからプロジェクトファイルを生成することができるということでしょうか?
プロジェクトファイルとは、普通にVS.NETで作製したプロジェクトと思っていましたが、ちょっと感じが違うようですね。


いえ、そのプロジェクトファイル(C#のプロジェクトなら.csproj)です。

引用:
もちろん、ILMergeでマージしてみたexeファイルを、VS.NETのプロジェクトから参照できない、というところまでは確認しています。


a.exeとb.dllをマージしてc.exeを作ったとします。

新たにdというプロジェクトを(例えばC#で)作りました。
dをVSで開いて参照の追加からc.exeを指定することはできません。これはVSの制限です。
しかしd.csprojをエディタで開き、References要素の子要素にReference要素を自分で追加し、そこにc.exeを指定することはできます。
もちろんこのように編集したd.csprojをVSで開いた場合、参照設定の中にc.exeが追加されています。
bminor
会議室デビュー日: 2005/07/30
投稿数: 6
投稿日時: 2005-08-01 21:56
exeファイルからも参照できますね。。
大変勉強になりました。ありがとうございました。
改めて.NET Frameworkを使うかどうか、検討したいと思います。

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