問題タブ [aspnet-merge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - TFS 別のプロセスによって使用されているため、プロセスはファイルにアクセスできません
Web アプリケーションをビルドする TFS を使用して自動ビルド プロセスを作成しました。
このプロセスの一部として、バッチ ファイルを使用して ASP Merge を呼び出し、Web ページを 1 つの dll にマージします。これを行うために、TFS アクティビティの Invoke Process を使用しています。
以下は、TFS ビルド ウィンドウに出力される内容のスクリーンショットです。 TFS ビルド出力
この問題のトラブルシューティング方法を知っている人はいますか?
c# - マージせずにプリコンパイルすると、ページとユーザー コントロールはどこに保存されるのでしょうか。
Web サイトを公開する場合、いくつかのプリコンパイル オプションがあります。この例では、それが .ascx ユーザー コントロールであり (ページの動作は似ています)、[プリコンパイル済みサイトを更新可能にする] がチェックされていないとします。これらはあなたが持っているオプションの一部です:
- プリコンパイルしない: ユーザー コントロールのコンテンツは .ascx ファイルに残り、必要に応じて一時的な ASP.NET フォルダーにコンパイルされます。
- プリコンパイル、マージなし: メイン DLL (projectName.dll) がわずかに異なり、.ascx が消え、ascx コンテンツがどこにも見つからない??
- プリコンパイル、単一アセンブリへのマージ: メイン DLL はわずかに異なり、.ascx コンテンツは新しい単一アセンブリにあり、.compiled ファイルが表示されます
- プリコンパイルし、ページとコントロールを単一のアセンブリにマージします: #3 とほとんど同じです。単一のアセンブリはわずかに小さくなります (おそらくトップレベルのアセンブリは含まれません) #3 のコードの一部が含まれています) #3 と同じですが、現在は.コンパイル済みファイル。
方法論: WinMerge を使用して、パブリッシュ出力を #1 と #2、次に #2 と #3 などと比較しました。また、1 つの ascx から一意の単語を選択し、Agent Ransack を使用してパブリッシュ出力を検索しました (インデックス化されたコンテンツだけでなく、すべてを検索します)。
質問: #2 では、ユーザー コントロールの HTML コンテンツはどこに行き着くのでしょうか? つまり、DLL 内の公開された ascx コンテンツや .compiled ファイルがないと、サイトはどのように機能するのでしょうか? #1 では、必要に応じて .ascx からコンテンツを取得しますが、#2 では利用できません。
編集:私が尋ねた直後にサイトが読み取り専用になり、ビルド出力が無効であることに気付きました。質問を更新して、より正確かつ徹底的にしました。
c# - C# クラス ライブラリ内のユーザー コントロール (asp.net、ascx ファイル)、ビルド エラー (aspnet_compiler.exe)
ASPNET_Compiler.exe からこのエラーを「渡す」のに問題があります。
エラー CS0103: 名前 'TestMath' は現在のコンテキストに存在しません。
ユーザー コントロール (.cs) ファイルから TestMath 内で呼び出される関数は、コンテキスト (スコープ/名前空間/...) の外にあります。TestMath 内のメソッドを呼び出す行をコメント アウトすると、コンパイルが機能し、ユーザー コントロール (WebApplication 内から DLL を参照) も機能します。
「TestMath」クラスは、-1+3 を返す 1 つの静的メソッド「Get」を含む静的クラスです (非静的を作成しようとしましたが、うまくいきませんでした)。
Visual Studio (MSBuild) での通常のビルドは機能しますが、ご存じのとおりです。.ascx ファイルを DLL に正しくパックしません。
以下を含む .rar を添付しました。
- テストライブラリ
1 つの .ascx コントロールと 1 つの数学クラスが含まれています
「BuildAssembly.cmd」を実行するビルド後のイベントが含まれており、次に aspnet_compiler と aspnet_merge を実行します。
- WebSite - ライブラリからコントロールを表示する 1 つの .aspx ページ。
エラーが発生する行は、Label.ascx.cs の 18 行目にあります。
何か提案はありますか?当ててみて?.ascx.cs 以外のクラスでメソッドを呼び出すことは禁止されていますか? ああ…でも、その言葉には何かがあります!つまり、次のように、User-Control クラス内に Math-class をコピーすると、次のようになります。
ソリューションはコンパイルされ、両方のクラス内でメソッドを呼び出すことができます...しかし、私たち全員が望むように; 私も例外ではありません。他のオブジェクトも呼び出せるようにしたいのです (私は既に行っていますが、それらは GAC に存在するだけです...)...だから、うーん...基本的には; aspnet_compiler はどこで dll を探しますか...
サンプル ソリューションをダウンロード: http://s000.tinyupload.com/?file_id=76690332418132532036
ソリューションを C:\Solutions\Test に解凍すると、Visual Studio 2010、Windows 7... .NET フレームワーク 4 以降を想定して、ほとんど問題なく実行できます。
それ以外の場合、ここにいくつかのコードがあります: ASCX
ASCX コードビハインド
テスト数学
BuildAssembly.cmd
2015 年に ASCX でこのように「曖昧」になったのはなぜでしょうか? ああ、数年前に作成された ascx ファイルを再利用して、それらをライブラリに永久にパックし、アセンブリに署名し、SharePoint 環境にインポートしたいと考えていました...