Pergunta

Usando .NET 2.0.

System.Drawing está na minha lista de Referências.

Aqui é o meu using instrução:

using System.Drawing;

Aqui está o código:

private static Rectangle rScreen;

Aqui está o erro nessa linha:

Texto De Erro:O nome do namespace ou tipo 'Rectangle' não existe no namespace 'Sistema.Desenho' (está faltando uma referência de assembly?)

Por quê?

EDITAR:Adicionado código de compilação:

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);
}

Todos os outros ReferencedAssemblies trabalho e de ter trabalhado por um longo tempo.Esta é a primeira vez que tive um erro.

Eu tenho assegurado o dobro verificado que a referência é adicionada.Se eu tentar adicionar novamente o projeto recebo uma mensagem de que a referência já existe.

Obrigado

Foi útil?

Solução

Você estadual nos comentários e tags de que isso está sendo compilado dinamicamente por outro aplicativo.É, portanto, provável que esta aplicação não está incluindo System.Drawing.dll como referência ao realizar a compilação e, portanto, o tipo não está resolvido.Não é suficiente mera estado using System.Drawing, a assembléia , a definição de espaço e de seus tipos também devem ser passados para o compilador.

No código, isso é feito usando uma CompilerParameters instância transmitida através de um dos CompileAssemblyFrom... chamadas para o CodeDomProvider instância que está a efectuar a compilação (no caso, o CSharpCodeProvider).O CompilerParameters.ReferencedAssemblies coleção indica para o compilador que assemblies para olhar ao tentar executar o tipo de resolução.

Atualização
Tente adicionar explicitamente mscorlib para as referências.

Também, eu não sei se isso está relacionado, mas como você mencionou um servidor (que é um serviço de algum tipo?), MSDN estados:

Classes dentro do Sistema.Desenho espaço de nomes não são suportados para utilização dentro de um Windows ou ASP.NET serviço.Tentar usar essas classes de dentro de um destes tipos de aplicação pode produzir problemas inesperados, tais como diminuída e o desempenho do serviço exceções em tempo de execução.Para um suporte alternativa, consulte o Windows Imaging Componentes.

Eu diria que isso se qualifica como um problema inesperado, embora eu não esperaria problemas para se manifestar durante o processo de compilação, mas sim, quando a execução do código.Dito isto, eles realmente não especificar que a documentação, portanto, poderia aplicar-se ao uso de System.Drawing.dll como referência geral.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top