Tentar compilar meu projeto no servidor de compilação me dá o seguinte erro:
Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Resolvi esse problema há alguns meses, com a instalação do Visual Studio 2010 no Build Server. Mas agora estou configurando um novo servidor do zero e quero saber se existe alguma solução melhor para resolver esse problema.
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
o caminho$(VSToolsPath)
por:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
Respostas:
Para responder ao título da pergunta (mas não à pergunta sobre a saída que você está obtendo):
Copiar a seguinte pasta da sua máquina dev para o servidor de compilação corrige isso se forem apenas aplicativos da web
Remova x86 de acordo com a quebra de sua compilação. Se você tiver outros tipos de projeto, provavelmente precisará copiar toda a pasta msbuild.
fonte
A criação e publicação de WAPs não são suportadas se o VS não estiver instalado. Com isso dito, se você realmente não deseja instalar o VS, precisará copiar todos os arquivos abaixo
%ProgramFiles32%\MSBuild\Microsoft\
.Você precisará instalar a Web Deploy Tool também. Eu acho que é isso.
fonte
UPD: a partir do VS2017, há uma carga de trabalho nas Ferramentas de Construção que elimina esse problema completamente. Consulte a resposta do @SOReader .
Se você preferir não modificar nada no servidor de compilação e ainda assim desejar que o projeto seja compilado fora do controle de origem, pode ser uma boa ideia colocar os binários necessários sob controle de origem. Você precisará modificar a seção de importações no arquivo do seu projeto para ficar assim:
A primeira linha é a importação real do novo local que é relativo ao diretório da solução. A segunda é uma versão desativada (
Condition="false"
) da linha original que permite ao Visual Studio ainda considerar seu projeto como um Projeto de Aplicativo da Web válido (esse é o truque que o VS 2010 SP1 faz sozinho).Não se esqueça de copiar a pasta
C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplications
paraBuildTargets
sob seu controle de origem.fonte
No momento, em 2017, você pode instalar as redists do WebApplication com o MSBuildTools. Vá para esta página que fará o download das Ferramentas do MSBuild 2017 e, durante a instalação, clique
Web development build tools
para instalar também esses destinos:Isso levará à instalação de bibliotecas ausentes
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications
por padrãofonte
choco install visualstudio2017-workload-webbuildtools
.Microsoft.VisualStudio.Workload.WebBuildTools
podem ser instalados através da linha de comando chamandovs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools
. Adicione--passive
para não precisar de intervenção do usuário.Você também pode usar o pacote NuGet MSBuild.Microsoft.VisualStudio.Web.targets , referenciando-os em seu (s) projeto (s) do Visual Studio, e depois alterar suas referências como Andriy K sugere.
fonte
Com base nesta publicação, você pode simplesmente fazer o download do Pacote Redistribuível do Shell do Microsoft Visual Studio 2010 (integrado) e os destinos estão instalados.
Isso evita a necessidade de instalar o Visual Studio no servidor de compilação.
Eu apenas tentei isso agora e posso verificar se funciona:
Antes:
Após a instalação:
[Cria corretamente]
Essa é uma solução muito melhor do que instalar o Visual Studio em um servidor de compilação, obviamente.
fonte
O SDK do Windows mais recente, como mencionado acima, além do "Pacote Redistribuível do Shell do Microsoft Visual Studio 2010" para Microsoft.WebApplication.targets e "Microsoft Visual Studio Team System 2008 Edição de Banco de Dados GDR R2" para Microsoft.Data.Schema .SqlTasks.targets deve aliviar a necessidade de instalar o Visual Studio 2010. No entanto, a instalação do VS 2010 talvez seja realmente menos geral para baixar e menos trabalho no final.
fonte
Adicione dependência através do NuGet e defina um parâmetro de compilação
Objetivo: nenhuma alteração / instalação é necessária para os agentes de construção
Adotei uma abordagem híbrida da abordagem NuGet de Lloyd aqui , que foi baseada na solução de confirmação de dependências binárias da Andrik.
O motivo é que quero poder adicionar novos agentes de construção sem ter que pré-configurá-los com itens como este.
[solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
Na versão 7, fiz o seguinte. Isso pode não ter sido necessário e, com base nos comentários, definitivamente não é necessário agora. Por favor, veja os comentários abaixo.
env.VSToolsPath
e defina-o na pasta VSToolsPath; eu usei..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath
fonte
<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
Ao criar no servidor de build / IC, desative a importação
Microsoft.WebApplication.targets
totalmente, especificando/p:VSToolsPath=''
. Essencialmente, isso tornará a condição da seguinte linha falsa:É assim que é feito no TeamCity:
fonte
Se você migrar o Visual Studio 2012 para 2013, abra o arquivo de projeto * .csproj com o edior.
e verifique o elemento ToolsVersion da tag 'Project'.
Altere seu valor de 4.0 para 12.0
De
Para
Ou Se você criar com o msbuild, basta especificar a propriedade VisualStudioVersion
Origem da solução
fonte
msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
Parece que a nova versão do msbuild não é fornecida com o Microsoft.WebApplication.targets. Para corrigir, você precisa atualizar seu arquivo csproj da seguinte maneira:
1) Edite o aplicativo web csproj (clique com o botão direito do mouse). Localize a seção no csproj na parte inferior referente às ferramentas de construção. Deve parecer assim.
2) Você precisa adicionar uma linha VSToolsPath abaixo da marca VisualStudioVersion para que pareça
Link de referência: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/
fonte
Isso é tudo que você precisa. Apenas 103MB. Não instale tudo
fonte
Eu encontrei isso no MS connect :
Então, essa é a única opção que tenho por enquanto.
fonte
Minha solução é uma mistura de várias respostas aqui.
Eu verifiquei o servidor de compilação e o Windows7 / NET4.0 SDK já estava instalado, então encontrei o caminho:
No entanto, nesta linha:
$ (MSBuildExtensionsPath) se expande para C: \ Arquivos de Programas \ MSBuild, que não possui o caminho.
Portanto, o que eu fiz foi criar um link simbólico, usando este comando:
Dessa forma, o $ (MSBuildExtensionsPath) se expande para um caminho válido e nenhuma alteração é necessária no próprio aplicativo, apenas no servidor de compilação (talvez seja possível criar o link simbólico a cada compilação, para garantir que essa etapa não seja perdida e "esteja documentada" ").
fonte
Corrigi isso adicionando
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"
em
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments
fonte
Tentei várias soluções, mas no final esta resposta funcionou para mim: https://stackoverflow.com/a/19826448/431522
Isso basicamente implica chamar o MSBuild a partir do diretório MSBuild, em vez do diretório do Visual Studio.
Também adicionei o diretório MSBuild ao meu caminho, para facilitar a codificação dos scripts.
fonte
Alguém vindo aqui para o Visual Studio 2017. Eu tive o problema semelhante e não pude compilar o projeto após a atualização para 15.6.1. Eu tive que instalar as ferramentas do MSBulild, mas o erro ainda estava lá.
Consegui corrigir o problema, copiando a
v14.0
pastaC:\Program Files (x86)\MSBuild\Microsoft\VisualStudio
para a mesma pastav15.0
e resolvendo todos os erros. Então agora minha estrutura de pastas se parece abaixo, onde ambas as pastas contêm o mesmo conteúdo.fonte
Se você estiver usando o MSBuild, como no caso de um servidor de compilação, o que funcionou para mim é:
Mude o seguinte:
para:
Meu comando Msbuild é:
*"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*
Espero que isso ajude alguém.
fonte
Caso esteja tentando implantar um projeto usando o VSTS, o problema pode estar relacionado à seleção da opção "Hosted Windows Container" em vez de "Hosted VS2017" (ou 18, etc.):
fonte
C:> msbuild "C: \\ DotnetCi.sln" / p: Configuração = Release / p: UseWPP_CopyWebApplication = true / p: PipelineDependsOnBuild = false
fonte
Eu estava com esse problema criando um projeto do SQL Server em um pipeline de CI / CD. Na verdade, eu também estava localmente e não consegui resolvê-lo.
O que funcionou para mim foi usar um MSBuild SDK , capaz de produzir um pacote de aplicativos da camada de dados do SQL Server (
.dacpac
) a partir de um conjunto de scripts SQL, o que implica a criação de um novo projeto. Mas eu queria manter o projeto do SQL Server, para poder vinculá-lo ao banco de dados ativo por meio do SQL Server Object Explorer no Visual Studio. Executei as seguintes etapas para instalar e executar:.sql
scripts do banco de dados.Defina o conteúdo da
.csproj
seguinte maneira:Eu escolhi o Sql140 como a versão do SQL Server porque estou usando o SQL Server 2019. Verifique esta resposta para descobrir o mapeamento para a versão que você está usando.
Ignore o projeto do SQL Server na compilação, para que ele pare de ser interrompido localmente (ele cria no Visual Studio, mas falha no VS Code).
Agora, apenas precisamos garantir que os
.sql
arquivos estejam dentro do projeto SDK quando ele for criado. Consegui isso com uma rotina simples de PowerShell no pipeline de CI / CD que copiava os arquivos do projeto SQL Server para o projeto SDK:PS: Os arquivos precisam estar fisicamente no projeto SDK, na raiz ou em alguma pasta, para que os links para os
.sdk
arquivos no projeto SQL Server não funcionem. Em teoria, deveria ser possível copiar esses arquivos com uma condição de pré-compilação, mas por algum motivo obscuro, isso não estava funcionando para mim. Tentei também ter os.sql
arquivos no projeto SDK e vinculá-los ao projeto do SQL Server, mas isso quebraria facilmente o vínculo com o SQL Server Object Explorer, então decidi deixar isso também.fonte