2

ASP.NETアプリケーションはVisualStudioの外部で開発され、ASP.NETコードとVisual Basicコードの両方を含む1つのaspx(pv.aspx)ファイルが含まれています。もともと、このメソッドを使用してaspxファイルをコンパイルしました。これにより、aspxの「プレースホルダー」ファイルが作成され、ファイルに含まれるすべてのASPとvbコードが非表示になります。ただし、望ましくない部分の1つは、.dllファイルの名前付けでした(例:「pv.aspx.cdcab7d2.compiled」)。

次に、この人の説明に従ってVS2010内にWebサイトプロジェクトを作成しようとしましたが、その場合、VBコードは正しくコンパイルされましたが、ASP.NETコードはコンパイルされておらず、まだ表示されていません(つまり、コンパイル時のプレースホルダーファイルではありません)。 aspnet_compiler.exeを使用)。

どちらのオプションも機能し、アプリケーションはIISでスムーズに実行されますが、クライアントが望んでいるものではありません。私は次のことをするように指示されました:

  • aspnet_compiler.exeがコマンドラインから実行するのと同じ方法で、pv.aspxをプレースホルダーファイルにコンパイルします。
  • pv.dllなどの特定の名前を持つようにdllファイルをコンパイルします

StackOverflowや他のサイトで、どちらか一方を実行するための情報を見つけましたが、両方を実行することはできません。それも可能ですか?そうでない場合は、asp.netコードとvbコードが表示されないが、dllファイルに指定された名前が付いているように、このWebアプリケーションを設計するにはどうすればよいですか?

4

2 に答える 2

2

必要な最初のオプション (プレースホルダーへのコンパイル) は、ASP.NET コンパイラーの関数であり、具体的には-uフラグが設定されていません。コンパイラから出力されるファイル名は内部的に生成され、ほとんど構成できません。命名に関してコンパイラが公開する唯一のオプションは-fixednames、各ページをコンパイルし、独自の DLL ファイルに制御します。デフォルトの動作は、コンパイラが適切と判断したときにそれらをバッチ処理することです。あなたはまだ命名を制御できません。(複数の DLL を 1 つに結合できるASP.NET マージツールを使用する場合は、DLL ファイルの名前をある程度制御できます。)

望ましくない名前の .compiled ファイルは DLL ファイルではなく、各ページをロードするときに正しいアセンブリとエントリ ポイントを見つけるために必要です。ASP.NETプリコンパイル中のファイル処理から:

コンパイル済みファイル

ASP.NET Web アプリケーションの実行可能ファイルの場合、コンパイラ アセンブリとファイル名拡張子が .compiled のファイル。アセンブリ名は、コンパイラによって生成されます。.compiled ファイルには、実行可能コードは含まれていません。代わりに、ASP.NET が適切なアセンブリを見つけるために必要な情報のみが含まれています。

プリコンパイル済みアプリケーションが配置されると、ASP.NET は Bin フォルダー内のアセンブリを使用して要求を処理します。プリコンパイル出力には、ページのプレースホルダーとして .aspx または .asmx ファイルが含まれます。プレースホルダー ファイルにはコードが含まれていません。これらは、特定のページ要求に対して ASP.NET を呼び出す方法を提供し、ファイル アクセス許可を設定してページへのアクセスを制限できるようにするためだけに存在します。

于 2013-08-24T17:42:36.520 に答える
1

Visual Studio 2010 を使用していると仮定すると、Web アプリケーションをリリース モードで発行すると、プレース ホルダー ファイルが作成されます。いくつかの条件付きコンパイル オプションを設定する場合は、WebProject プロパティのビルド タブで設定できます。アセンブリの固定名の設定については、次のページを参照してください。

http://msdn.microsoft.com/en-us/library/bb398860.aspx#PreCompilingToFixedNameAssemblies

固定名アセンブリへのプリコンパイル、署名付きアセンブリへのプリコンパイルを探します

お役に立てれば。

于 2013-08-28T20:38:51.307 に答える