6

アプリケーションサーバーをデバッグモードで起動し、IDEをサーバーに接続できるJavaと比較しています。また、サーバーを再起動せずに「その場で」コードを変更できます。変更がメソッド シグネチャやフィールドに影響を与えない限り、クラスの再コンパイルを押すだけで、アプリケーション サーバー (サーブレット コンテナー) がクラスをリロードします。

すべてのクラスがアセンブリにパックされており、アセンブリをアンロード/再ロードできないため、ASP.NET ではこれは不可能だと思います。

そのため、.aspx ページとアセンブリを GAC に展開し、分離コードを変更した場合は、アセンブリを再展開して IIS をリセットする必要があります。特にSharepointアプリケーションについて話しているのですが、プライベート アセンブリに対して iisreset を実行する必要があるかどうかはわかりませんが、あなたもそうだと思います。

したがって、コードビハインドでaspxページをデバッグする最良の方法は、アクティブなデバッグ中にコードビハインドを取り除き、ページに移動し、多かれ少なかれ機能しているときにコードビハインドに戻すことです. (これは、Sharepoint のアプリケーション ページにのみ適用されます。サイト ページではインライン コードは許可されません)。

時間を短縮するために、ASP.NET アプリケーションのデバッグにどのようにアプローチしますか?

4

8 に答える 8

5

SharePoint で F5 デバッグを取得する方法については、Matt Smith のブログから。とてもクールなトリックです。

  1. Visual Studio で Web アプリケーション プロジェクトを作成します ([ファイル] -> [新規] -> [プロジェクト] -> [ASP.Net Web アプリケーション]、[ファイル] -> [新規] -> [Web サイト] ではありません)。
  2. .csproj および .csproj.user ファイルを Properties フォルダーと共に C:\inetpub\wwwroot\wss\virtualdirectories\ に移動します。ここで、 は目的の SharePoint サイトに対応する Web アプリケーションの名前または番号です。デバッグオン。
  3. プロジェクトを既存のソリューション (STSDEV プロジェクトなど) にアタッチします。
  4. スタートアップ プロジェクトに設定します(プロジェクト名を右クリック、「スタートアップ プロジェクトに設定」)。
  5. プロジェクトのプロパティにアクセスし (プロジェクト名を右クリックして [プロパティ] をクリック)、
  6. [サーバー] 設定で [IIS Web サーバーを使用する] をクリックし、デバッグする SharePoint Web アプリケーションの URL を入力します (例: http://mymachine:99 ) 。
于 2008-10-07T01:29:46.927 に答える
4

はい、プライベート アセンブリは IIS のリセットを必要としません。したがって、新しいバージョンをアプリケーションの Bin ディレクトリにxcopyし、ページを更新する必要があります (たとえば、私が行ったように VS ポスト ビルド イベントによって)。しかし、いくつかのトレードオフがあります。アプリケーションの web.config ファイルで信頼レベルを下げる必要があります。

<system.web>
    ...
    <trust level="WSS_Medium" originUrl="" />
    ...
</system.web>

ところで。このように展開することはお勧めしません。これは、書き込み、テスト、デバッグのサイクルの長さを快適にするための単なる回避策です。

于 2008-08-28T10:27:21.170 に答える
3

GAC を使用している場合、少なくともiisapp.vbs /a "App Pool Name" /r代わりに行うことができますiisreset(IIS を再起動するよりも、単一のアプリケーション プールをリサイクルする方が迅速です)。

于 2008-09-02T19:31:37.140 に答える
1

まず、SharePoint を実行しているコンピューターで開発します。できれば、これは Virtual PC または VMWare 上で Windows Server 2003 を実行することを意味します。これにより、サーバー間でファイルをコピーしてリモート デバッガーを使用するのではなく、SharePoint コードを直接展開してデバッグできます。

VS アドインを使用して、展開とデバッグのプロセスを簡素化します。私はWSPBuilderを使用していますが、他にもあると思います。WSPBuilder には、ソリューションをデプロイし、それらを WSP としてパッケージ化し、デバッガーをローカル IIS プロセスにアタッチするためのコマンドがあります。その場でアセンブリを追加/削除することはできませんが、ブレークポイントを設定し、VS のイミディエイト ウィンドウからコードを実行できます。

運用サーバーの構成方法にもよりますが、通常は、ASPX ファイルのコード ブロックを禁止するなど、完全/信頼のセキュリティ設定を使用してサーバーで開発することをお勧めします。これにより、デバッグが少し難しくなりますが、コードが最終的に本番環境にデプロイされたときに発生する厄介な驚きの数が減ります。

于 2008-10-07T12:20:36.007 に答える
0

自動テスト フレームワーク (NUnit) を使用して統合テストを記述します。これはすべての場合に機能するわけではありませんが、もちろん、何をテストしているかによって異なります。

TestDriven.NET もインストールされている場合は、デバッガーで個々のテストを実行できます。これは役に立ちました。

于 2008-10-07T18:14:55.370 に答える
0

WSPBuilder Extensions には「Deploy to GAC」ショートカットがありますが、残念ながら私には機能しません。しかし、これはコード→コンパイル→テストの非常に簡単な方法です。

WSPBuilder 拡張機能を使用していない場合は、代わりにコマンド プロンプトを開いて実行できます。

gacutil /u yourassemblynamegoeshere gacutil /i yourdllgoeshere.dll

これを頻繁に行う場合は、ビルド後のイベントまたはバッチ ファイルに配置できます。また、gacutil /u (最初に DLL を削除するため) が必要かどうかもわかりません。

于 2008-10-07T18:17:42.477 に答える
0

あなたがやろうとしているように見えるのは、Sharepoint に「Visual Studio でデバッグを開始するときに、登録されている DLL のバージョンではなく、プロジェクトの /bin/debug ディレクトリでコンパイルされた DLL のバージョンを使用する」ということです。 GAC。」私はその問題を解決していませんが、Sharepoint をデバッグする方法は次のとおりです。

開発者のマシンには、Win2008、IIS 7、MOSS 2007、VisStudio 2008、および WSP Builder がインストールされています。VS2008 内に、w3p.exe プロセスにアタッチするためのボタンが追加されました。Andrew's HOWTO attach to w3p

ソリューション ファイルには 2 つのプロジェクトがあります。
* 最初のプロジェクトは、DLL を含むすべてのアプリ ページをデプロイする .WSP です。.WSP の作成と展開を処理するには、WSPBuilder メニュー項目を使用します。
* 2 番目のプロジェクトは、ページの背後にある DLL 用です。

DLL を GAC に定期的にコピーする場合は、/bin/Debug から GAC にコピーする DLL のプロジェクトにビルド後のイベントを追加します。

しかし、最近では、ソリューションを再コンパイルし、メニュー項目を使用して .WSP を展開し、ボタンを使用してデバッガーを起動していることに気付きました。F キーと 3 回のクリックで、ほとんどのプロジェクトで約 1 分かかりますが、もっと速くできると思います。

于 2009-12-23T15:27:19.253 に答える
0

また、サーバーを再起動せずに「その場で」コードを変更できます

(Web アプリケーション プロジェクトではなく) Web サイト プロジェクトを作成すれば、ASP.net でこれを実現できます。Web サイト プロジェクトを使用すると、サーバー上で何も更新しなくてもコード ビハインドに変更をポストでき、サーバーがすべてのコード変更のコンパイル作業を行います。詳細については、こちらを参照してください。

これにより、アセンブリを GAC に展開する際の問題も解決されます。サーバーが Web サイト プロジェクトのすべてのコンパイルを処理するため、ファイルを変更するときにアセンブリを再デプロイする必要はありません。

于 2008-08-28T09:51:23.080 に答える