もう少し前にC#6にアップグレードされた古いソリューションがありました。それは年齢、古い学校asp.netからウェブAPI 2までのすべてのもののために多種多様なプロジェクトタイプを持っています。しかし、何らかの理由で従来のasp.netプロジェクトのashxファイルはまだC#5をターゲットにしています新しい言語機能をいくつか使用することはできません(C#コードはashxファイル内にインラインで定義されていますが、別々のashx.csファイルはありません)。コンパイラをashxファイル用にアップグレードするにはどうすればよいですか?問題のフォローアップ - 残りのソリューションで使用されているコンパイラのバージョンを継承させるにはどうすればよいですか?ashxハンドラは古いC#コンパイラを使用しています
0
A
答えて
1
まず、マークアップに含まれるコード(.aspxや.ashxなど)は、コードビハインドと同じ方法でコンパイルされないことがわかります。コードビハインドはDLLにコンパイルされ、binフォルダに展開されます。一方、.ashxファイルと.aspxファイルをプリコンパイルするのに問題がなければ、ジャストインタイムベースでコンパイルされます。実際には、Webサーバー上で直接マークアップを変更することができ、その変更によって再コンパイルがトリガーされます。
第2に、.ashxのコンパイルが大幅に変更されたことに注意してください。以前は<BuildProviders> elementによってコンパイルが制御されていましたが、通常はSystem.Web.Compilation.WebHandlerCompilationProvider
で構成されていました。しかし、2.0と4.5の間のどこかで、それは<Compilers> elementを使用して異なる種類の構成を支持して非難されました。後者はlanagugeのバージョンを指定するように設定することができます。
<system.codedom>
<compilers>
<!-- zero or more compiler elements -->
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
compilerOptions=""
warningLevel="1" />
</compilers>
</system.codedom>
あなたの(非常に古い)コードベースが正しく構成されていないと思います。旧式の構成を使用しているか、バージョン識別子が間違っている可能性があります。
私の提案は.ashxマークアップを適切な.csファイルに移動し、ビルド中に他のすべてのコードと共にコンパイルすることです。これでこの問題は完全に回避されます。それ以外の場合は、マシンのconfigsを覆う必要があります(これらの設定は必ずしもweb.config内にあるわけではありません)。
関連する問題
- 1. jqueryとハンドラ(ashx)を使用してアップロードファイル
- 2. キャッチされないのReferenceErrorは:私はC#のハンドラ(.ashx)を使用して、このエラーを取得する
- 3. 古いC++コンパイラのフェンシング
- 4. HttpContext.Current.User.Identity.Nameが.ashxハンドラで動作しない
- 5. カスタムセキュリティfor ashxハンドラ
- 6. iphoneでC#ashxハンドラが動作しないmp4ビデオを提供します。
- 7. itextsharpを使用してashxハンドラからPDFを保存します。
- 8. .Netハンドラ(ashx)for Fineuploader
- 9. ASP.NET MVC 3とRazorを使用したASHXハンドラ
- 10. ashxハンドラを使用してマニフェストMIMEタイプを無効にした場合
- 11. json ajaxを使用してjqueryuiダイアログボックスからWebハンドラ[.ashx]に値を送信
- 12. リクエストはASHXハンドラで他のリクエスト値を取得しますか?
- 13. 古いBorland CでVisual C++ DLLを使用していますか?
- 14. asp:Imageオブジェクトで.ashxハンドラを使用するにはどうすればいいですか?
- 15. ASHXハンドラでThread.CurrentThread.CurrentCultureを変更する
- 16. ボタンクリックイベントから.ashxハンドラを呼び出す
- 17. CLionは正しいコンパイラを使用していませんか?
- 18. コンパイラは、私はG ++コンパイラを使用して、Linux上でのインテルコード・カバレッジ・ツールを使用していますコードカバレッジ
- 19. ASHXハンドラを呼び出して結果を返す方法
- 20. Intel Cコンパイラを使用してlibmにリンクしない方法
- 21. FMPPは古いFTL構文を使用しています
- 22. プロジェクトでは古いバージョンのブーストライブラリを使用しています
- 23. ハドソンビルは古い瓶を使用しています
- 24. XCode 4:アーカイブは古いプロジェクト名を使用しています
- 25. Yawsは古い設定ファイルを使用しています
- 26. ワーカースレッドを通してハンドラを使用していますか?
- 27. Sever.The ASHXハンドラから、HttpContext.Current.Sessionがnullです
- 28. コンパイラの古いバージョンに存在するC++ cmathの捕虜エラーではなく、4.2.1 G ++コンパイラで新しい1
- 29. 古いコンパイラ用のプログラムを実行するには?
- 30. 長いクエリ文字列パラメータを持つASP.NETハンドラ(.ashx)
.NET版のプロジェクトをアップグレードしないのはなぜですか? – Legends
すでに4.5.1にありますが、実際にはC#6はプロジェクトのどこかで使用されています。それは文字通りashxのファイルです。 – gzak
何が文句を言いますか? Strange ...しかし、あなたは 'public class SyncHandler:IHttpHandler'のように、ashxを使わずにハンドラを書き直すことができます。その後、web.configに登録します。それは同じだ。 – Legends