Pergunta

Vamos imaginar que eu já tenho uma montagem de edifício do projeto .NET 3.5. Agora, quero construir esta assembléia para o Silverlight e, além disso, manter sua versão Silverlight com esforços mínimos ainda mais.

O que não é aceitável:

  • Criando projeto separado para construção de Silverlight

O que é aceitável:

  • Adicionando diretrizes personalizadas que me permitem atingir Silverlight ou .NET dependentemente das propriedades do MSBUILD.
  • Adicionando configurações especiais de compilação para Silverlight
  • Adicionando seções #IFDEF Silverlight / #endif ao código -fonte.
  • Geralmente qualquer outra modificação de .csproj / .cs.

Então, basicamente, eu gostaria de manter um único projeto, mas direcionar duas estruturas. Não quero manter dois projetos separados, porque isso pode levar a erros como esquecer de incluir um novo arquivo. Se existem muitos projetos e grandes equipes, isso é realmente importante para excluir esses erros.

Se isso for completamente impossível, qualquer solução que fornece benefícios semelhantes é aceitável.

Foi útil?

Solução

Você também descartou a ligação aos arquivos dentro do seu projeto de um projeto Silverlight? Essa é uma abordagem bastante comum para compartilhar uma implementação entre o Silverlight e o CLR completo. Compartilhando código entre plataformas .NET e Silverlight

Além disso, de acordo com Justin Angel, você pode fazer referência e usar uma biblioteca da classe Silverlight a partir do CLR completo. Eu não tentei isso sozinho, e deixa algumas perguntas sem resposta, mas isso torna o cenário simples: http://silverlight.net/blogs/justinangel/archive/2008/12/29/using-silverlight-dlls-on-the-desktop.aspx

Outras dicas

Eu concordo com Scott. Economize muita dor. Dois projetos que compartilham a mesma base de código é o caminho a seguir. Você precisará usar o VStudio em ambos os ambientes, para usar LIBs diferentes, para incluir/Exculde Arquivos, para fazer tantas coisas ... facilmente!

O motivo de ter dois projetos distante Outweight as desculpas por ter uma.

O MSDN contém informações detalhadas sobre a plataforma multi-alvo:Multi-alvo no MSDN

Eu acho que o que você precisa fazer é o nível corretamente. Seu código Silverlight deve ser apenas para a interface do usuário e a comunicação com os serviços de back -end WCF. Esses serviços executariam seu código .NET 3.5 (o código que você deseja compartilhar). Dessa forma, você tem compartilhamento e n-camada também.

Se você estiver fazendo um cálculo pesado no lado do cliente no seu código Silverlight e envie-o ao servidor (e provavelmente ao banco de dados), acho que você está abrindo um orifício de segurança.

Você não deu uma razão atraente para que um projeto separado precisaria acessar o código no projeto Silverlight.

Você precisa ter dois projetos porque as referências do MSCORLIB são diferentes para as duas plataformas.

Confira esta pergunta: http://www.google.ca/search?hl=en&q=targetting+silverlight+and+wpf&meta=&aq=f&oq=

Se tudo o que você deseja fazer é ter uma biblioteca .NET antiga que compartilhou entre os dois, sugiro criar dois projetos (um para o Silverlight, um por regular) e incluir os mesmos arquivos nos dois projetos. Isso é muito mais fácil de entender para outros desenvolvedores.

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