0

私はアプリケーションを書いています、それは終わりに近づいています、そして私はスマートアセンブリを使って私のコードに難読化を適用したいと思います、そして可能であれば署名も...

問題は、私のアプリケーションがマルチパートであり、さらに重要なことに、そのパートの1つがサービスベースであり、MSIセットアッププロジェクトを使用してインストールする必要があり、最初にビルドしてからパッケージ化できないため、ビルド時間の難読化であるため、すべてのクラスライブラリプロジェクトとサービスおよびユーザーインターフェイスはビルド時間で難読化を実行し、準備ができたら、MSIはそれらをパッケージ化できます...必要な方法で、誰もが幸せになります...

スマートアセンブリがビルド時にこれを実行できるようにする構成があると聞きましたが、その方法がわかりません:-s

4

2 に答える 2

1

技術的には、SmartAssemblyがアセンブリを処理する前に、アセンブリをビルドする必要があります。アセンブリは中間言語コードで機能するため、コンパイル後まで処理できません。

ただし、これは問題ではないと思います。最終的には、ビルド出力をMSIにパッケージ化する前に難読化する必要があります。したがって、これを自動的に実行したい場合は、vsprojを編集して、SmartAssemblyのビルド後の手順を含めることができます。http: //www.red-gate.com/supportcenter/Content/SmartAssembly/help/6.7/SA_UsingSmartAssemblyWithMSBuild

MSセットアップおよび展開プロジェクトを使用してMSIを構築している場合、重要な変更は、SmartAssemblyの入力と出力を/ objフォルダーに向けることです。これは、奇妙な理由で、Microsoftが/objからアセンブリを取得するのではなくmore-従来の/bin。

于 2012-09-18T16:27:55.143 に答える
1

「ブライアン・ドナヒュー」が答えの中で言ったこの問題の解決策を見つけました:

MSセットアップおよび展開プロジェクトを使用してMSIを構築している場合、重要な変更は、SmartAssemblyの入力と出力を/ objフォルダーに向けることです。これは、奇妙な理由で、Microsoftが/objからアセンブリを取得するのではなくもっと-従来の/bin

解決策は、セットアップ(.vdproj )ファイルをテキストエディターで開き(私はNotepad ++を使用します)、このノードに「 ProjectOutput 」というノードが見つかるまでファイルの最後に移動し、「」という属性を見つけることです。SourcePath "この属性には、プロジェクト出力のパス(.exeまたは.dll)があります。

ここで、このパスを「obj」ディレクトリではなく「bin」ディレクトリを指すように変更し、「 x86」または「x64」ディレクトリを「Release」または「Debug 」ディレクトリに変更することを忘れないでください。

于 2013-09-24T23:29:39.500 に答える