質問

.NET2.0を使用します。

System.Drawing 私の参照リストにあります。

ここに私のものがあります using 文:

using System.Drawing;

ここにコードがあります:

private static Rectangle rScreen;

この行のエラーは次のとおりです:

エラーテキスト:型または名前空間名'Rectangle'が名前空間'Systemに存在しません。図面'(アセンブリ参照がありませんか?)

どうして?

編集:コンパイルコードを追加:

Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("CompilerVersion", "v3.5");

CSharpCodeProvider codeProvider = new CSharpCodeProvider(dict);

CompilerParameters parameters = new CompilerParameters();

{
    parameters.ReferencedAssemblies.Add("System.Drawing.dll");

    parameters.ReferencedAssemblies.Add("System.dll");

    parameters.ReferencedAssemblies.Add("System.Core.dll");

    parameters.ReferencedAssemblies.Add("System.Data.dll");

    parameters.ReferencedAssemblies.Add("System.Data.Linq.dll");

    parameters.ReferencedAssemblies.Add("System.DirectoryServices.dll");

    parameters.ReferencedAssemblies.Add("System.Configuration.dll");

    parameters.ReferencedAssemblies.Add("System.Web.dll");

    parameters.ReferencedAssemblies.Add("System.Xml.dll");

    parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");

    parameters.ReferencedAssemblies.Add("System.Web.Services.dll");

    parameters.ReferencedAssemblies.Add("System.ServiceModel.dll");

    parameters.ReferencedAssemblies.Add("System.IdentityModel.dll");

    parameters.ReferencedAssemblies.Add(string.Format(@"{0}{1}Microsoft.ReportViewer.Common.dll", AppDomain.CurrentDomain.RelativeSearchPath, @"\ReportViewer\"));

    parameters.ReferencedAssemblies.Add(string.Format(@"{0}{1}Microsoft.ReportViewer.WebForms.dll", AppDomain.CurrentDomain.RelativeSearchPath, @"\ReportViewer\"));
}

CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, sources.ToArray());

try
{
    ApexAssemblyManager.dynamicAssemblies.Add(hashKey, new DynamicAssemlby(results.CompiledAssembly));

    return ApexAssemblyManager.dynamicAssemblies[hashKey].CreateInstance(typeName);
}

他のすべての参照アセンブリは動作し、長い間働いてきました。このようなエラーが発生したのはこれが初めてです。

参照が追加されていることを確認し、再確認しました。もう一度プロジェクトに追加しようとすると、参照がすでに存在するというメッセージが表示されます。

ありがとう!

役に立ちましたか?

解決

コメントとタグに、これが別のアプリケーションによって動的にコンパイルされていることを示します。したがって、この他のアプリケーションには次のものが含まれていない可能性があります System.Drawing.dll コンパイルを実行するときの参照として、したがって、型は未解決です。それは単に状態に十分ではありません using System.Drawing, 、その名前空間とその型を定義するアセンブリもコンパイラに渡す必要があります。

コードでは、これはaを使用して行われます CompilerParameters のいずれかを介して渡されたインスタンス CompileAssemblyFrom... への呼び出し CodeDomProvider コンパイルを実行しているインスタンス(この場合は、コンパイルを実行しているインスタンス)。 CSharpCodeProvider).ザ- CompilerParameters.ReferencedAssemblies collectionは、型解決を実行しようとするときにどのアセンブリを表示するかをコンパイラーに示します。

更新
明示的に追加してみてください mscorlib 参照に。

また、これが関連しているかどうかはわかりませんが、サーバーについて言及したように(ある種のサービスですか?), MSDNの状態:

システム内のクラス。絵を描く 名前空間の使用はサポートされていません ウィンドウ内またはASP.NET サービス。からこれらのクラスを使用しようとしています 次のいずれかのアプリケーションタイプ内で 予期しない問題が発生する可能性があります サービスのパフォーマンスが低下したことと、 実行時の例外。サポートされているため 別の方法として、Windowsイメージングを参照してください コンポーネント。

コンパイルプロセス中に問題が発生するのではなく、コードを実行するときに問題が発生することを期待していますが、これは予期しない問題とそうは言っても、彼らは実際にはドキュメントでそれを指定していないので、それはの使用に適用することができます System.Drawing.dll 一般的には参考として。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top