Estou preparando uma nova solução ASP.NET MVC 5.1. Estou adicionando um monte de pacotes NuGet e configurando-o com a Zurb Foundation etc.
Como parte disso, adicionei uma referência a um pacote NuGet interno que é uma Biblioteca de Classes Portátil e acho que isso está causando um problema no servidor de compilação.
O TeamCity falha na compilação com:
O tipo 'System.Object' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'System.Runtime, Versão = 4.0.0.0
Originalmente, adicionei a correção para o erro igual ou semelhante ao compilar as páginas da Web Razor, que estão no web.config
<compilation ... >
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
No entanto, o problema não foi resolvido.
fonte
.vs
pasta após o fechamento do projeto, reaberto, removido aweb.config
entrada e agora ele cria e executa bem.Adicionar uma referência a este assembly System.Runtime.dll corrigiu o problema:
Embora esse arquivo nesse caminho explícito não exista no servidor de construção.
Vou postar de volta com mais informações assim que encontrar alguma documentação sobre o PCL e essas Fachadas.
Atualizar
Sim, praticamente nada nas montagens de fachadas em toda a Internet.
Google:
fonte
A única maneira que funcionou para mim. Adicione o assembly ao web.config
fonte
O comentário de @ PeterMajeed na resposta aceita me ajudou com um problema relacionado. Não estou usando a biblioteca portátil, mas tenho o mesmo erro de compilação em uma nova instalação do Windows Server 2012, na qual estou executando o TeamCity.
A instalação do Microsoft .NET Framework 4.5.1 Developer Pack resolveu o problema (depois de instalar separadamente o MS Build Tools ).
fonte
Eu tive esse problema em algumas soluções no VS 2015 (embora não no MVC) e até na mesma solução em uma estação de trabalho, mas não em outra. Os erros iniciados apareceram após a alteração da versão do .NET para 4.6 e a referência ao PCL.
A solução é simples: feche a solução e exclua a pasta .vs oculta na mesma pasta que a solução.
Adicionar as referências ausentes, conforme sugerido em outras respostas, também resolve o problema, mas o erro permanece resolvido mesmo depois que você remove as referências novamente.
Quanto ao TeamCity, não posso dizer, pois minha configuração nunca teve um problema. Mas certifique-se de redefinir o catálogo de trabalho como parte de seu esforço de depuração.
fonte
É um problema antigo, mas eu o enfrentei hoje para corrigir um pipeline de compilação em nosso servidor de integração contínua. Adicionando
para o meu
.csproj
arquivo resolveu o problema para mim.Um pouco de contexto: o projeto interessado é um projeto completo do framework .NET .NET 4.6.1, sem problemas de construção nas máquinas de desenvolvimento. O problema aparece apenas no servidor de compilação, que não podemos controlar, pode ser devido a uma versão diferente do SDK ou algo semelhante.
A adição do proposto
<Reference
solucionou o erro de criação, ao preço de um aviso de referência ausente (triângulo amarelo na entrada adicionada na árvore de referências) no Visual Studio.Espero que isso possa ajudar pessoas em cenários semelhantes ...
fonte
Instale o .NET Runtime, bem como o pacote de direcionamento para a versão .NET que você está direcionando.
O pacote de desenvolvedor é apenas essas duas coisas reunidas, mas até hoje não parece ter uma versão 4.6, então você terá que instalar os dois itens separadamente.
Os downloads podem ser encontrados aqui: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#
fonte
Eu também estava enfrentando esse problema ao tentar executar um projeto ASP .NET MVC após uma pequena atualização em nossa base de código, mesmo que compilada sem erros:
Nosso projeto nunca havia se deparado com esse problema, então fiquei cético em relação à alteração dos arquivos de configuração antes de descobrir a causa raiz. Nos logs de erro, eu consegui localizar essa saída detalhada do compilador, que apontava para o que realmente estava acontecendo:
Aparentemente, um novo pacote adicionado ao nosso projeto estava fazendo referência a uma versão mais antiga do .NET Framework, causando o problema de "definição em vários assemblies" (CS1685), o que levou ao erro do compilador de exibição do razor view em tempo de execução.
Eu removi o pacote incompatível (System.Collections.Immutable.dll) e o problema parou de ocorrer. No entanto, se o pacote não puder ser removido em seu projeto, você precisará tentar a resposta de Baahubali .
fonte
No nosso servidor de compilação Tfs 2013, tive o mesmo erro, em um projeto de teste. com o principal projeto da web em execução no .Net 4.5.1.
Instalei um pacote nuGet do System Runtime e adicionei a referência de packages \ System.Runtime.4.3.0 \ ref \ net462 \ System.Runtime.dll
Isso resolveu para mim.
fonte
_._
Eu precisava baixar e instalar o SDK do Windows 8.0 (e não 8.1) para fazer com que o erro desaparecesse no meu servidor TeamCity.
https://developer.microsoft.com/en-us/windows/downloads/windows-8-sdk
fonte
Eu adicionei System.Runtime.dll ao projeto bin e funcionou :)
fonte
Eu tive esse problema em uma solução com um projeto de API da Web e vários projetos de biblioteca. Um dos projetos da biblioteca estava trabalhando na construção, com erros que diziam que os atributos do Unity não eram atributos "válidos" e, em seguida, um erro dizia que eu precisava fazer referência ao System.Runtime.
Depois de muita pesquisa, reinstalação do 4.5.2 Developer Pack, e nada funcionando, achei que talvez fosse apenas uma incompatibilidade de versão. Então, olhei para as propriedades de cada projeto e uma das bibliotecas básicas estava direcionada ao 4.5, enquanto todas as outras estavam direcionadas ao 4.5.2. Mudei esse para também direcionar para 4.5.2 e os erros desapareceram.
fonte
Copio o arquivo "C: \ Arquivos de programas (x86) \ Assemblies de referência \ Microsoft \ Framework.NETFramework \ v4.5.1 \ Facades \ system.runtime.dll" para a pasta bin do servidor de produção, isso resolve o problema.
fonte
instale o https://www.microsoft.com/en-us/download/details.aspx?id=49978 Microsoft .NET Framework 4.6.1 Developer Pack e adicione esta linha de código no arquivo Web.config
fonte
Para mim ajudou apenas esta linha de código:
Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
fonte
Remover a referência sobre o Nuget Package Manager e adicioná-lo novamente resolveu o problema para mim.
fonte