私のプロジェクトでは、PDFライブラリITextSharpを使用しようとしています。 ITextSharpは非常に多くの機能を備えていますが、私はその5%を使用していません。私はちょうど私がそれのわずか5%を使用するとき、なぜ私は完全なdllファイルを出荷すべきかと思っています。.netライブラリ(dll)の最適化
ライブラリーをプロジェクトに静的にリンクする方法はありますか?使用されていないメソッド、機能をライブラリーからすべて削除する方法はありますか?
私のプロジェクトでは、PDFライブラリITextSharpを使用しようとしています。 ITextSharpは非常に多くの機能を備えていますが、私はその5%を使用していません。私はちょうど私がそれのわずか5%を使用するとき、なぜ私は完全なdllファイルを出荷すべきかと思っています。.netライブラリ(dll)の最適化
ライブラリーをプロジェクトに静的にリンクする方法はありますか?使用されていないメソッド、機能をライブラリーからすべて削除する方法はありますか?
ソースコードを変更せずに独自の.dllを作成することなく、すべてを出荷しない方法はありません。さらに、あなた自身の変更された.dllを作成するルートを目指したいのであれば、ライセンスに関する問題が発生する可能性があることに気をつけてください(何かがあるかどうかわかりませんが、そして最後に、iTextSharpの.dllの大きさは分かりませんが、実際には多くのスペースが必要になる場合は、自分自身に本当に尋ねます。
1つのファイルが複数の利点を持っているため、ポイント1で違うことをお奨めします。 – BCS
このような状況では、コードをダウンロードしたサイトが最適です。
多くの場合、条件付きコンパイルを使用して特定の部分を含める/除外します。条件付きコンパイルを念頭に置いてコードが書かれていない場合は、それを自分で行うのは難しいでしょう。
修正が必要なバグがあり、新しいリリースを待つことができない限り、私は個人的にソースを再コンパイルしません。変更に費やされた時間は、メインプロジェクト(あなたが支払っているプロジェクト)で失われた時間です。
サイズを小さくしたい場合は、難読化器またはアセンブリ圧縮器の2つのオプションがあります。
.NET用のobfuscatorをJava用に使用していないので、私はお勧めできませんが、使い慣れていないメソッドやクラスは削除してください。
または、一般的なAspackやUPX do for Windowsの実行可能ファイルhttp://en.wikipedia.org/wiki/Executable_compressionのように起動すると、必要なすべてのアセンブリが自動的に解凍された圧縮された実行可能ファイルを1つ作成できます。私は.NetZを試して、結果に満足していました。
免責事項:私は言及するつもりの製品を持つ会社のために働いています。私は他のツールも同様にこれを行うことができますが、私はこれと直接の経験があることを知っています。
ITextSharpソースを変更したり、独自のカスタムビルドを実行したりする必要はありません。 binディレクトリにあるアセンブリだけで必要なものをすべて得ることができます。
Dotfuscator(削除オプション)を使用すると、アプリケーション全体の静的解析を実行し、アプリケーションで実際に使用されているコードのみを含むアセンブリを出力できます。さらに、リンク機能を使用してDLLをEXEにリンクすると、顧客に1つのファイルのみを出荷することができます。これにより、アプリケーションのフットプリントが大幅に小さくなります。アプリケーションのクラックやリバースエンジニアリングを難しくする難読化機能を使用しない場合でも、この機能をすべて利用できます。
Dotfuscatorはさまざまな方法でビルドプロセスに追加することができます。Visual Studio(バージョン2002〜2010)に直接統合してソリューションを構築するだけでなく、チームで使用するためのMSBuildタスクもありますビルドサーバー(ビルドサーバーにソリューションをビルドさせたくない場合)と、他のビルドシステム用のコマンドラインバージョン。
Dotfuscatorは、Silverlightアセンブリを含む.NETアセンブリタイプで動作します。
これらの機能はPro版のDotfuscatorでのみ利用可能です.PreEmptive Solutionsにお問い合わせいただくと、無料で時間制限のある評価ができ、製品の仕組みを確認することができます。
アセンブリのリンクを実行したい場合は、複数の.NETアセンブリを1つのアセンブリにリンクするMicrosoft ResearchのILMergeユーティリティもあります。
+1は、利害の衝突の可能性にもかかわらず、関連性があり包括的な答えです。 –
彼はそれを指摘しているので、私は利益相反があるとは思わない。そのことに関して葛藤するものは何でもあります。 – BCS
私は自動化された方法を探しています。私が期待しているのは、コンパイラ/ツールは自動的に関数 'foo'を削除しなければならないということです。 (relectionが使用されていないと仮定します)。 – Palani
パフォーマンス、メモリ、またはインストールのサイズだけを最適化しようとしていますか?あなたが電話していないコードを削除することは、最初の2つを助けることではありません。 – JohnFx