0

cs コード ビハインド ファイルの dll を作成するための -fixednames スイッチを取得できません。bin フォルダー内のファイルはコンパイルされた aspx ページですが、コード ビハインド ファイルはすべて 1 つの大きな websitename.dll ファイルにコンパイルされます。

これがスイッチを使用した私のコマンドです。aspnet_compiler -v / -p E:\Source\DotNet4\mysolution\website -f -d -fixednames E:\Source\DotNet4\CompiledWebSite

これにより、bin フォルダーに多くのファイルが生成されます。

website.dll および website.pdb (分離コードを含む) myform1.aspx.643c7876.dll (コンパイルされた aspx レイアウト ui)

これを何度もテストして、何も見逃していないことを確認しました。テストでは、myform1.aspx にラベルを配置し、分離コードでラベルにテキストを入力します。上記のスイッチを使用して Web サイトをコンパイルし、Web サイトを展開します。

myform1 分離コードに変更を加え、ラベル テキストを変更します。myform1.aspx.643c7876.dll をコンパイルして、Web サイトにのみ展開します。結果: ラベルは同じままです。ここで、website.dll と pdb をデプロイすると、ラベルが変更されます。

コードビハインド用の単一のdllを作成するために-fixednamesを取得する方法を教えてもらえますか?

4

1 に答える 1

1

違いは、Web アプリケーションと Web サイトの概念にあると思います。Visual Studio で 2 つの同一のアプリを作成しました。1 つは Web アプリケーションとして、もう 1 つは Web サイトとして作成しました。ページは default.aspx で、クラスは "_Default" です。Web Applicationで"aspnet_compiler -v / -p . -f -d -fixednames ..\CompiledSite" を実行すると、新しいビンに 2 つの dll があり、1 つは WebApplication1.dll と呼ばれ、_Default クラスが含まれていました。 1 つは App_Web_default.aspx.cdcab7d2.dll という名前で、マークアップが含まれていました。まったく同じコマンド ラインでWebSiteをコンパイルすると、マークアップと _Default クラスの両方を含む 1 つの DLL しか作成されませんでした。

どうやってこの 2 つの違いを認識したのか、私には聞かないでください。私が考えられる唯一のことは、Web アプリケーション用の csproj ファイルが存在するという事実だけです。

私が読んだことと理解した方法から、aspnet_compiler は Web アプリケーション プロジェクトではなく、WebSite プロジェクト用に設計されているため、WebSite を使用していると思いました。

アプリケーションを単一ページの DLL として設計する必要がある場合は、新しい Web サイト プロジェクトを構築し、.aspx ファイルと .aspx.cs ファイルをその Web サイトに追加して、aspnet_compiler コマンドでコンパイルし、何が起こるかを確認してください。サンプルの 1 ページまたは 2 ページから始めることができます。

機能するかどうかを判断するために、実際にテストや再コンパイルなどを行う必要はありません。Reflector の DLL ファイルを見て、クラスがどこにあるかを確認してください。それらがマークアップと同じ DLL にある場合は、機能します。それ以外の場合は、集中型アプリケーション DLL 内にある必要があります。

うまくいけば、すべてが理にかなっています-幸運を祈ります。

于 2010-04-29T13:50:21.667 に答える