"Copy Local" é transitivo para referências de projeto?

Wrt. o dupe proposto: Uma vez que esta pergunta aqui sugere o oposto dopergunta vinculada, Eu gostaria de pensar que énão um idiota.

PrimeiroEu liQual é a melhor prática para “Copiar local” e com referências de projeto? (Além dissoesta) e terei que tentar isso de qualquer maneira, mas obter feedback geral sobre isso parece necessário, pois odocs essas coisas são horríveis e eu só estou no VS2010 e talvez elas tenham mudado algo nas versões mais recentes que será bom saber.

Segundo, Eu só estou interessado emprojeto referências para esta pergunta como eu tenholeia que as assembléias do GAC são tratadas de maneira diferente e o GAC é irrelevante para o meu problema.

Terceiro, depois de ler o idiota sugerido, mas mais ainda o bomresponda aqui por @Albireo, parece também que é importante diferenciarArquivo dependências, em que a dependência faz referência a um arquivo de assembly dll eprojeto dependências (ou seja, o que estou perguntando), onde a dependência faz referência aprojeto e implicitamente o arquivo de saída desse projeto.

Enfim, aqui está a situação, um pouco peculiar, eu acho, mas ainda assim:2 projetos executáveis em C #projetos de montagem em c # dllOs 2 executáveis têm diretórios de saída diferentes, pois serão implantados separadamente e, dessa forma, também serão separados na máquina do desenvolvedorOs dois executáveis têm dependências em alguns dos assemblies de DLL (que podem depender um do outro)Existem três diretórios de saída:/x1 para 1 projeto executável/x2 para o projeto executável 2/lib para todos os conjuntos de dll

Os assemblies de DLLtudo terCopy Localdefinido comofalse para suas referências de projeto, pois todas elas são construídas no mesmo diretório de saída.

O 2projetos executáveis ter definidoCopy Local paratrue para todas as referências de projeto de montagem de DLL que eles referenciam diretamente, para que as DLLs sejam copiadas para/x1 /x2 respectivamente.

A questão agora está errado. para DLLs que sãonão diretamente referenciado por um projeto executável, massó transitivamente através de uma montagem referenciada:Assembléias, que sãosó referenciada transitivamente por outra montagem, ser copiada para a pasta de saída do executável, quando "Copiar Local"é definido como true na primeira montagem?

Exemplo:

x1.csproj (por exemplo, Saída =x1/one.exe)Referência:dlA.csproj (por exemplo, Saída =lib/a.dll) comCopy Local = *true*(nenhuma referência direta no b.dll)dlA.csproj (por exemplo, Saída =lib/a.dll)Referência:dlB.csproj (por exemplo, Saída =lib/b.dll) comCopy Local = **false**(nenhuma referência direta no c.dll)dlC.csproj (por exemplo, Saída =lib/c.dll)(sem mais referências relevantes)

Assim, temos uma dependência lógica deone.exe -> a.dll -> b.dll -> c.dllonde apenasa.dll obviamente, ser copiado para o diretório de saída doone.exe. As outras duas DLLs também serão copiadas para o diretório de saída? Isso está documentado em algum lugar?

E sim, eu tentei. E simparece para trabalhar, mas ainda não o cutuquei o suficiente e, de qualquer forma, talvez haja algo mais que eu possa ter perdido. (E também há a pergunta escrita. Quaisquer documentos oficiais.)

questionAnswers(2)

yourAnswerToTheQuestion