問題タブ [csharpcodeprovider]

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.

0 投票する
2 に答える
807 参照

c# - CSharpProvider ランタイム コンパイルで DLL が見つからない

CSharpCodeProvider を使用して実行時に DLL をコンパイルしています。私のコードは一部のマシンでは正常に動作しますが、他のマシンでは次のエラーで失敗します:

エラー CS0006: メタデータ ファイル 'EntityFramework.dll' が見つかりませんでした

コード スニペットを次に示します。

なぜこれが起こっているのでしょうか?

0 投票する
1 に答える
710 参照

.net - CSharpCodeProvider の設定と .NET プロファイル バージョンの確認

アプリケーションの組み込みスクリプト環境に mono を使用しています。スクリプトのコンパイルには、Microsoft.CSharp.CSharpCodeProvider を使用します。現在、System.Numerics のような 4.0 または 4.5 の機能が必要です。ただし、コンパイラ オプションで System.Numerics.dll を参照すると、エラーが発生します。

(0,0): エラー CS0006: メタデータ ファイル `System.Numerics.dll' が見つかりませんでした

プロバイダーのアセンブリの場所は 2.0.0.0 gac を指しているので、これが失敗してもそれほど驚くことではありません。ただし、mono-2.11.4 と v4.0 および v4.5 プロファイルが配置されているため、プロバイダーが必要なアセンブリを見つけられないのはなぜなのか、または要求どおりに v4.0 を提供しているのか疑問に思います。

0 投票する
1 に答える
866 参照

c# - ASP.NET で単純な CSharpCodeProvider を使用すると、LINQ 関連のエラーが発生する

非常に単純なカスタム コンパイラを作成しました。

私の web.config ファイルでは、既存の構成をコピーして貼り付け、この新しいコンパイラを宣言しました。

しかし、次のようなコードでユーザー コントロールにアクセスするとエラーが発生します。

>で失敗します<AAA>。何かがどこかに欠けているはずですが (using?)、標準のコンパイラで問題なくビルドされますMicrosoft.CSharp.CSharpCodeProvider

エラーメッセージは次のとおりです。

コンパイラ エラー メッセージ: CS1525: 無効な式の用語 '>'

更新: LINQ に関連しているようです。制御コードに LINQ があるすべてのページで失敗します。ただし、System.Core.dll は Web.config に含まれています。

Update2:新しい Web アプリケーション プロジェクトで再現できました。

  1. 新しいクラスを追加します。

    }

  2. アップデートweb.config

    /li>
  3. 変更Default.aspx:

    /li>

プロジェクトを に更新すると4.0、機能します。しかし、私は他のものでそれを行うことはできません。

0 投票する
3 に答える
271 参照

c# - 実行時にコンパイルされたコードを呼び出すときに、現在のアプリケーションのオブジェクトにどのようにアクセスしますか?

私の現在のプロジェクトは、C# でコードを記述し、CSharpCodeProvider を使用して実行できるアプリケーションです。この時点では、コード自体が完全なアプリケーションである限り、問題なく動作します。次に例を示します。

次に、アプリケーションはCompileAssemblyFromSourcewithを使用して指定されたコードをコンパイルし、コンパイルされたアセンブリ内でメソッドGenerateInMemory = trueを呼び出します。Main

私の質問は、コンパイルされたコードがメイン アプリケーションのオブジェクトにアクセスできるようにするにはどうすればよいかということです。

0 投票する
3 に答える
701 参照

c# - CSharpCodeProviderによって生成されたコードをメモリから解放する

CSharpCodeProviderを使用して、一時的な使用のみを目的として、メモリ内に新しい名前空間をコンパイルおよび生成しました。ただし、次に生成されるコードが、生成されるすべてのクラスとメソッドの同じ識別子をオーバーライドできるようにするには、この名前空間を一定期間後にメモリから削除する必要があります。

0 投票する
1 に答える
1392 参照

c# - CSharpCodeProvider を使用した遅い動的コンパイル

動的コンパイルと標準コンパイルを比較しようとしていました。また、動的コンパイルはかなり遅いようです。私のベンチマークによると、1400% 遅くなります。

動的にコンパイルされたコードを呼び出すデリゲートを生成するメソッドを次に示します。

パフォーマンスをテストするために作成したコードは次のとおりです。

私のテストによると、動的コンパイルは非常に遅くなります。これは何とか解決できますか?おそらく問題は、ベンチマークの方法にあるのでしょうか?

0 投票する
0 に答える
117 参照

c# - CSharpCodeProvider と難読化

Web アプリケーションで動的に DLL を作成して、一意のクラス (具体的には、このダウンロードに固有の内部の一意の変数) を生成し、ユーザーがダウンロードできるようにしたいと考えています。

CSharpCodeProvider でこれを行うことができますが、このキーを DLL を反映する人に公開したくありません。

アセンブリ内でこの値を難読化する方法はありますか?

0 投票する
0 に答える
310 参照

c# - 実行中に C# で res ファイルを生成する

「iconholder-apps」を作成するための小さなツールを作成しています(コード部分がない/小さいアプリケーション - インフォボックスのみ)。

アプリケーションは複数のアイコン (win32 res リソース) を保持する必要があり、.net アプリケーションから作成する必要があります ( CSharpCodeProvider)

winapi / .NET 2.0を介してコンパイルされたwin32リソースを作成することは可能ですか、またはそこにresファイルのドキュメントがありますか(したがって、生のバイト出力でこれらのファイルを作成することが可能になります)

(サブ質問: reshacker はどのようにリソースを「再コンパイル」しますか?)

または、唯一のオプションでコンパイルしrc.exeています(できればrc.exeを埋め込むのは好きではありません)

または、複数のアイコンを含むリソースを作成するための別のオプションがありますか (リンク/ショートカット アイコンとして使用できます)。

0 投票する
6 に答える
52386 参照

c# - 保護レベルエラーのため、メンバーにアクセスできません

このトピック内で接続: クラスからフォームに文字列を接続する方法

私は彼らの答え(特にジェレミー卿の答え)に関連する解決策を行おうとしていますが、このエラーは表示され続けます

'KeyWord.KeyWord.keywords'は、保護レベルが原因でアクセスできません

KeyWords.csのコード:

main.csのコード

私は何をすべきか?

0 投票する
1 に答える
1706 参照

c# - Weird Assembly.Load error trying to load assembly compiled with C# code provider

I'm trying to compile an assembly from my code with C# code provider.

When I access the compiled assembly with compilerResult.CompiledAssembly, everything works. However, when I instead do Assembly.Load(path), I get the following exception:

System.IO.FileLoadException : Could not load file or assembly 'C:\Users\Name\Desktop\output.dll' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

What am I doing wrong?

Here's the code: