Como adicionar uma referência de projeto a uma biblioteca principal .Net de outra solução

fevereiro 9, 2017 6:00 pm Publicado por Deixe um comentário

Eu estava debugando uma aplicação .NET e, para resolver um problema, eu tive que mudar o código na aplicação e em uma biblioteca .NET referenciada ao mesmo tempo. 

Uma maneira de conseguir fazer isso quando ambos estão na mesma solução é referenciar a biblioteca configurando seu “target” como “project” no arquivo project.json. Algo assim: 

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "SameSolutionLibrary": {
      "target": "project"
    },
    ...
}

É fácil e vai funcionar como padrão em ambos os projetos que tenham a mesma pasta principal. Exemplo:

Isso funciona:

/SolutionA/Project1/project.json
 /SolutionA/Project2/project.json

Isso não funciona:

/SolutionA/SomeDir/Project1/project.json
 /SolutionA/SomeOtherDir/Project2/project.json

Uma maneira de contornar essa limitação é referenciar qualquer projeto em seu computador para adicionar sua pasta para a solução atual no arquivo global.json

{
  "projects": [ "src", "test", "C:/dev/personal/mini-biggy/src" ],
  "sdk": {
    "version": "1.0.0-preview2-003131"
  }
}

Você também pode utilizar caminhos absolutos ou relativos. Assim que você fizer isso, adicione o projeto como referência, da mesma maneira que você fez com a biblioteca local:

{
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "SameSolutionLibrary": {
      "target": "project"
    },
    "Mini-Biggy" : {
      "target" : "project" 
    },
...

E está tudo pronto.

Note que o arquivo referenciado também aparecerá no seu Solution Explorer. Bom debugging!

***

Artigo publicado originalmente em http://www.andrecarlucci.com/en/how-to-add-a-project-reference-to-a-net-core-library-from-another-solution/

Source: IMasters

Categorizados em:

Este artigo foi escrito pormajor

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *