【发布时间】:2011-08-26 15:24:48
【问题描述】:
使用 .NET 2.0。
System.Drawing 在我的参考文献列表中。
这是我的using 声明:
using System.Drawing;
代码如下:
private static Rectangle rScreen;
这是这一行的错误:
错误文本:命名空间“System.Drawing”中不存在类型或命名空间名称“Rectangle”(您是否缺少程序集引用?)
为什么?
编辑:添加编译代码:
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);
}
所有其他 ReferencedAssemblies 都可以工作并且已经工作了很长时间。这是我第一次遇到这样的错误。
我已确保并仔细检查了引用已添加。如果我再次尝试将其添加到项目中,我会收到一条消息,指出该引用已存在。
谢谢
【问题讨论】:
-
这是与 Visual Studio 的吗?您是否在编辑器中
Rectangle一词的右下角看到一个小红方块并建议更正?你可以输入System.Drawing.Rectangle来代替它吗? -
它在 Visual Studio 中编译得很好。这是在另一个包含 using 语句的应用程序中动态编译的。
-
a) 尝试使用类型的完整范围,b) 您的声明是否在
using语句的范围内? c) 请编辑问题并解释动态编译的内容。 -
请贴出编译代码。这就是这种情况下的错误代码。另外,您的开发机器上是否安装了 .NET 4?您确定它引用了所引用程序集的正确版本吗?
标签: winforms .net-2.0 dynamic-compilation