Pergunta

Eu tenho um C # projeto Visual Studio (.csproj) que tem uma referência para a versão Framework64 de System.Data. Quando eu tento construir usando MSBuild / Team Foundation Server (TFS) em outra máquina, ele falha como a DLL de 64 bits não existe.

Devo ligar para a versão Framework, ou será que este limite me quando rodando em máquinas de 64 bits? Does .NET redirecionar a ligação de usar 64-bit quando possível?

Foi útil?

Solução

Eu acho que você quer dizer Qualquer CPU na sua pergunta, correto? Assumindo que é o caso, a ligação sem levar em conta bitness é o caminho a percorrer em quase todas as circunstâncias.

Lembre-se que .NET código é JITed (Just In Time compilado) - o que significa 32 bits e código de 64 bits a partir de um C # ou VB.NET compilador é a mesma matéria sem o que a arquitetura que você pretende correr. Quando o código é JITed em tempo de execução, que é quando se torna 32 ou 64 bits.

Em algumas situações, você tem que importar a arquitetura alvo. Um caso específico seria quaisquer referências / dependências COM -wrapper DLLs, .NET Framework fornecido ou de outra forma. Este ser que esses arquivos DLL será marcado (no caso de COM) como de 32 bits somente (como COM é de 32 bits única arquitetura) se eles não foram marcadas como 32 bit, interoperabilidade de COM não funcionaria. Portanto, uma vez que são marcados de forma explícita, os resultados do projecto deve ser bem.

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