빌드 서버에서 Microsoft.WebApplication.targets를 찾을 수 없습니다. 당신의 해결책은 무엇입니까?


410

빌드 서버에서 프로젝트를 빌드하려고하면 다음 오류가 발생합니다.

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.

몇 달 전에 Build Server에 Visual Studio 2010을 설치하여이 문제를 해결했습니다. 그러나 이제 처음부터 새 서버를 설정하고 있으며이 문제를 해결하는 더 나은 솔루션이 있는지 알고 싶습니다.


1
웹 응용 프로그램 프로젝트는 더 이상 사용되지 않습니까? 이전 버전의 Visual Studio를 빌드하기 위해 필요한 이유는 무엇입니까?
brianary

1
요컨대 실제로 빌드 서버를 통해 배포합니까? 예를 들어, 솔루션에 별도의 웹 설치 프로그램 프로젝트가 있습니다 ... 그리고 여전히이 피 묻은 것을 원합니다 ... 답 = proj 파일에서 제거하십시오! 쉬운.
Paul Zahra


1
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />경로를 다음과 $(VSToolsPath)같이 바꾸어 수정 :<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
GJ

답변:


207

질문의 제목에 답하려면 (그러나 얻는 결과에 대한 질문은 아님) :

웹 응용 프로그램 인 경우 개발자 컴퓨터에서 빌드 서버로 다음 폴더를 복사하면이 문제가 해결됩니다.

C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

빌드가 깨지는 방식에 따라 x86을 제거하십시오. 다른 프로젝트 유형이있는 경우 전체 msbuild 폴더를 복사해야합니다.


11
이것은 v10.0을 v11.0으로 대체 한 후 m2에서 VS2012 프로젝트로 작동했습니다.
DenNukem

2
이 대신 MSBuild 도구를 설치할 수 없습니까? microsoft.com/ko-kr/download/confirmation.aspx?id=40760
user20358

1
아아, MSBuild 도구를 설치하는 것만으로는 VisualStudio 2013에서 잘 컴파일되는 프로젝트를 빌드하기에 충분하지 않습니다
Michael Shaw

VS2013을 설치 한 후 웹 폴더를 v11.0으로 복사하여 작동 시키려면 누락되었습니다. VS에서 컴파일 할 수 있지만 MSBUILD를 통해 직접 컴파일 할 수는 없습니다.
Martin Braun

9
VS2017에서 근무했습니다. C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ vXX.0 \ WebApplications를 C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ WebApplications에
복사하십시오.

95

VS가 설치되어 있지 않으면 WAP 빌드 및 게시가 지원되지 않습니다. 그렇게 말하면 VS를 정말로 설치하지 않으려면 아래의 모든 파일을 복사해야합니다 %ProgramFiles32%\MSBuild\Microsoft\.

Web Deploy Tool 도 설치해야합니다 . 나는 그것이 생각합니다.


4
말했다-dansomething의 아래 답변을 참조하십시오-귀하의 답변이 맞습니까? VS 2010 Shell Integrated 패키지를 설치해도 .NET SDK가 웹 응용 프로그램 프로젝트 지원을 올바르게 설치하지 않습니까?
Adam

@SayedIbrahimHashimi 수동 폴더 복사를 수행하는 경우 GAC에 DLL을 등록해야합니까?
TheOptimusPrimus

그리고 Microsoft.TextTemplating.targets는 어떻습니까? 폴더에 넣으려면 어떻게해야합니까? C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0
개발자

@ClarkKent, TextTemplating 파일과 대화 할 수 없습니다. 나는 그것들에 익숙하지 않다.
이브라힘 하시 미라고

77

UPD : VS2017부터 빌드 도구에는이 문제를 완전히 제거하는 워크로드가 있습니다. @SOReader 답변을 참조하십시오 .

빌드 서버에서 아무것도 수정하지 않으려는 경우에도 프로젝트가 소스 제어에서 바로 빌드되도록하려면 필요한 바이너리를 소스 제어 아래에 두는 것이 좋습니다. 다음과 같이 프로젝트 파일에서 가져 오기 섹션을 수정해야합니다.

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

첫 번째 행은 솔루션 디렉토리와 관련된 새 위치에서 실제로 가져옵니다. 두 번째는 Condition="false"Visual Studio가 프로젝트를 유효한 웹 응용 프로그램 프로젝트 (VS 2010 SP1 자체에서 수행하는 트릭)로 간주 할 수 있도록하는 원래 줄의 해제 버전 ( )입니다.

소스 컨트롤 아래에 C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsto BuildTargets폴더 를 복사하는 것을 잊지 마십시오 .


이 솔루션은 저에게 효과적이며 실제로는 최고의 옵션이었습니다. 빌드 서버에 액세스 할 수 없기 때문입니다. Atlassian의 Elastic bamboo를 사용하여 새 서버를 구축하여 빌드 서버 역할을합니다. 이러한 AMI에 웹 애플리케이션 대상이 포함되어있는 것은 언뜻보기에는 보이지 않습니다 ?? 그것은 나에게는 이해가되지 않지만 그것이 그렇게 보이는 방식입니다.
코디 클라크

1
이것은 좋은 방법이지만,이 변경을 위해서는 각 csproj 파일을 변경해야합니다. 솔루션에 새 프로젝트를 추가하면 까다 롭습니다. 물론 그것은 사용자 정의 프로젝트 템플릿으로 해결할 수는 있지만 여전히 그렇습니다. 어쨌든,이 대답은 올바른 방향을 가리 켰습니다. 감사!
100r

75

현재 2017 년에는 MSBuildTools를 사용하여 WebApplication Redists를 설치할 수 있습니다. 이 페이지 로 이동하여 MSBuild 2017 도구를 다운로드하고 설치하는 동안 Web development build tools이러한 대상을 설치 하려면 클릭하십시오 . 여기에 이미지 설명을 입력하십시오

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplications기본적으로 누락 된 라이브러리를 설치하게됩니다.


2
필자는 5 살짜리 라이브러리를 소스 제어에 포함시키는 것에 대해 놀랐습니다. 그리고 수정 사항이 오늘날에도 여전히 투표권을 받고 있지만, 이것이 바로 답이 아닙니다.
Andriy K

2
@AndriyK 귀하의 솔루션은 내가 제안한 것과 약간 다르며 왜 게으름이 아니라면 누군가가 왜 내 것을 선호하는지 이해할 것입니다.;
SOReader

2
보다 일반적인 Visual Studio 버전을 위해 Visualstudio.microsoft.com/downloads 에서 최신 빌드 도구를 다운로드 할 수 있습니다 . 페이지를 아래로 스크롤하여 아래쪽에있는 "Visual Studio 용 도구"섹션을 확장 한 다음 " Visual Studio 용 빌드 도구 "를 참조하십시오. 현재 이들은 VS 2017 용이지만 향후 버전에서도 동일하다고 가정합니다. 그런데 CI 도구 (예 : Jenkins)의 msbuild.exe 경로가 필요하면 VS 2017의 경우 C : \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0에 설치됩니다. \ Bin \ msbuild.exe.
Simon Tewsi 2016 년

2
이를 수행하는 빌드 서버 호환 (읽기 : 명령 행) 방법은입니다 choco install visualstudio2017-workload-webbuildtools.
Paul Hicks

1
또한 "웹 개발 빌드 도구"패키지Microsoft.VisualStudio.Workload.WebBuildTools을 호출하여 명령 줄을 통해 설치할 수 있습니다 vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools. 추가 --passive하지 않아도 사용자의 개입에.
Wai Ha Lee

70

NuGet 패키지 MSBuild.Microsoft.VisualStudio.Web.targets를 사용 하여 Visual Studio 프로젝트 내에서 참조하고 Andriy K가 제안한대로 참조를 변경할 수도 있습니다.


2
솔루션을 먼저 열어야하기 때문에 사용할 수 없지만 오류로 인해 사용할 수 없습니다.
개발자

솔루션에 둘 이상의 프로젝트가있는 경우 여전히 다음을 수행 할 수 있어야합니다. 1. 솔루션을 엽니 다.-웹 프로젝트가로드되지 않는다는 것을 무시하십시오. 2. 너겟 참조를 추가하십시오. 3. 그 후에 언급 된 접근법 중 하나를 취하십시오. 프로젝트 파일을 수동으로 편집하거나 TeamCity에서 env.VSToolsPath 변수를 대체 할 수 있습니다.
Damon

1
이것은 공식적으로 출시 된 MS nuget 패키지입니까, 아니면 누군가 방금 만들었습니까?
Simon_Weaver

훌륭한 솔루션-다른 버전의 VS에서 작동합니다.
Jonno

39
공식적으로 출시 된 Microsoft nuget 패키지는 아닙니다. 내가 만들었 기 때문에 알고 있습니다.
mak

54

을 바탕으로 이 게시물에 여기 당신은 단순히 다운로드 할 수 있습니다 마이크로 소프트 비주얼 스튜디오 2010 쉘 (통합) 재배포 가능 패키지 와 대상이 설치됩니다.

이렇게하면 빌드 서버에 Visual Studio를 설치할 필요가 없습니다.

방금 시도한 결과 작동하는지 확인할 수 있습니다.

전에:

오류 MSB4019 : 가져온 프로젝트 "C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets"를 찾을 수 없습니다. 선언의 경로가 올 바르고 파일이 디스크에 있는지 확인하십시오.

설치 후 :

[정확하게 빌드]

이것은 분명히 빌드 서버에 Visual Studio를 설치하는 것보다 훨씬 더 나은 솔루션입니다.


7
가장 쉽고 간단한 솔루션 IMO입니다. VS 2013을 사용하고 있으며 Visual Studio 2013 Shell (Isolated) Redistributable이 효과가 있음을 알았습니다 (Integrated One은 의존성으로 인해 설치되지 않음).
Matt Miller

@MatthewSkelton- 빌드 서버 의 의미는 무엇입니까 ?
Mohammed Zameer

2
@BountyMan-빌드 서버는 소프트웨어의 CI (Continuous Integration) 빌드를 수행하거나 제어하는 ​​서버입니다. 예 : Jenkins, TeamCity, CruiseControl 등
Matthew Skelton

3
불행히도 VS v14.0의 경우 패키지를 설치하는 방법은 nuget을 통하는 것이지만 내 문제는 빌드 서버에 VS가 설치되어 있지 않기 때문에 (MSBuild 만 해당) 패키지 설치가 불가능한 것으로 판명되었습니다. PC에서 서버로 폴더를 복사하기 전에 PowerShell과 Nuget의 다양한 반 백업 설치로 시간을 허비했습니다.
pasx

1
@pasx 오류 메시지에 "v14"가 포함되어 있으면 Visual Studio 2015 Isolated Shell을 대신 설치할 수 있습니다. visualstudioextensibility.com/downloads/vs-shells("URL 다운로드 "아래에서 필수 설문 조사가 있습니다.)
Dunc

38

최신 Windows SDK의뿐만 아니라, 위에서 언급 한 바와 같이 "마이크로 소프트 비주얼 스튜디오 2010 쉘 (통합) 재배포 가능 패키지" Microsoft.WebApplication.targets 및 "Microsoft Visual Studio Team 시스템 2008 데이터베이스 버전 GDR R2" Microsoft.Data.Schema에 대한 .SqlTasks.targets는 Visual Studio 2010을 설치해야 할 필요성을 완화해야합니다. 그러나 VS 2010을 설치하면 실제로 전체 다운로드가 적고 결국 작업량이 줄어 듭니다.


참고-전체 VS를 설치하지 않고 빌드 서버에서 Sql 프로젝트를 빌드하려는 경우 여기에 언급 된 Team System 2008 Database Edition GDR R2 설치 프로그램이 마음에 들지 않습니다. 사전 요구 사항은 Visual Studio Team System 2008 Database Edition SP1 (영어) 또는 Visual Studio Team System 2008 Suite SP1 (영어) 및 Visual Studio 2008 서비스 팩 1입니다. 그러나 SqlServer.targets를 .NET Framework \에서 복사 할 수 있습니다. v4 디렉토리와 TeamData msbuild는 \ program files \ msbuild \ microsoft \ visual studio \ v10.0 \에서 파일을 대상으로하면 csprojs가 빌드됩니다.
Ethan J. Brown

확실히 가장 예쁜 해결책은 아니지만 나에게는 시간이 가장 중요합니다. 단순히 MSBuild 디렉토리를 복사하면 더 많은 문제가 발생합니다.

21
클라이언트 용 빌드 서버를 설정하는 독립 개발자 인 경우 클라이언트가 소프트웨어를 빌드 할 수 있도록 Visual Studio 라이센스를 유지 관리하지 않아도되기 때문에 이것은 매우 중요한 답변입니다.
thelsdj

VS2010 셸 통합 패키지와 EntLib 5 만 있으면 빌드 할 수있었습니다. 팀 시스템이 필요하지 않았습니다.
Robin Winslow

1
해당 링크에서 더 이상 VS 2010 셸을 사용할 수 없습니다. "찾고있는 리소스가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다."
kristianp

22

NuGet을 통한 종속성 추가 및 빌드 매개 변수 설정

목표 : 빌드 에이전트에 변경 / 설치가 필요하지 않음

Andloy커밋 바이너리 의존성 솔루션을 기반으로 한 LloydNuGet 접근법에 대한 하이브리드 접근법을 사용했습니다 .

그 이유는 이와 같은 항목으로 미리 구성하지 않고도 새 빌드 에이전트를 추가 할 수 있기를 원하기 때문입니다.

  1. Visual Studio가 설치된 컴퓨터에서 솔루션을 엽니 다. 웹 프로젝트가 실패했음을 무시하십시오.
  2. Lloyd가 언급했듯이 NuGet 패키지 관리자에서 MSBuild.Microsoft.VisualStudio.Web.targets를 추가하십시오 .
  3. 이것은 바이너리를 해결합니다 [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. 이것을 참조 폴더에 복사하고 커밋 할 수 있습니다.
    2. 또는 그들이있는 곳에 사용하십시오. 나는 이것을 선택했지만 나중에 경로의 버전 번호를 처리해야합니다.

버전 7에서는 다음을 수행했습니다. 이것은 필요하지 않을 수도 있으며, 의견을 기반으로 할 필요는 없습니다. 아래의 의견을 참조하십시오.

  1. 다음으로 TeamCity 빌드 구성에서 빌드 Paramenter를 추가 env.VSToolsPath하고 VSToolsPath 폴더로 설정하십시오. 나는 사용했다..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath

8
프로젝트 파일의 <Import> 요소를 다음과 같이 <Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
바꾸면

이 답변은 허용되어야하며 포인트 4는 삭제해야합니다.
Izzy

@Izzy 감사합니다, 대신 knocte가 표시된대로 주석을 작성 했습니까? 몇 년 동안 버전 7 iirc에서 TC를 사용하지 않았습니다.
데이먼

@Damon 저는 TC가 아닌 Jenkins를 사용하고 있기 때문에 마지막 요점이 필요하지 않은 것 같습니다.
이지

21

빌드 / CI 서버에서 빌드 할 Microsoft.WebApplication.targets때을 지정 하여 가져 오기를 모두 해제하십시오 /p:VSToolsPath=''. 이것은 본질적으로 다음 줄의 조건을 거짓으로 만듭니다.

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />


이것이 TeamCity에서 수행되는 방식입니다.

여기에 이미지 설명을 입력하십시오


Visual Studio의 "게시"메커니즘을 사용하려면 빌드 대상이 필요합니다. 이렇게하면 컴파일을 진행하고 완료 할 수 있지만 불완전 할 수 있습니다.
starlocke

14

Visual Studio 2012를 2013으로 마이그레이션하는 경우 edior를 사용하여 * .csproj 프로젝트 파일을 엽니 다.
'Project'태그의 ToolsVersion 요소를 확인하십시오.

값을 4.0에서 12.0으로 변경

  • 에서

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
  • <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" ...

또는 msbuild로 빌드하는 경우 VisualStudioVersion 속성 만 지정하십시오.

msbuild /p:VisualStudioVersion=12.0

솔루션 소스


4
TFS 2013 빌드 정의 (Visual Studio 2013에서 만든 솔루션의)에서 MSBuild 인수에 /p:VisualStudioVersion=12.0을 추가하면 나에게 도움이되었습니다. 어떤 이유로 v11.0 폴더에서 매개 변수없이 파일을 찾습니다.
Sacha K

3
이 솔루션은 저에게 msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
효과적이었습니다

9

msbuild의 새 버전은 Microsoft.WebApplication.targets와 함께 제공되지 않는 것 같습니다. 수정하려면 csproj 파일을 다음과 같이 업데이트해야합니다.

1) 웹 응용 프로그램 csproj를 편집하십시오 (오른쪽 클릭). csproj에서 빌드 도구와 관련된 맨 아래 부분을 찾으십시오. 그렇게 보일 것입니다.

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

2) VisualStudioVersion 태그 아래에 VSToolsPath 행을 하나 추가해야합니다.

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!--Add the below line to fix the project loading in VS 2017 -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!--End -->
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

참조 링크 : https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/


8

이것이 당신이 필요한 전부입니다. 103MB 만 모든 것을 설치하지 마십시오

여기에 이미지 설명을 입력하십시오


아무것도 설치 하지 않고 해당 양식에 체크 표시를 하는 방법은 무엇입니까?
Christian

5

MS connect 에서 이것을 발견했습니다 .

예, 데이터베이스 프로젝트를 빌드하려면 빌드 시스템에 Visual Studio 2010을 설치해야합니다. 그렇게하려면 Visual Studio의 추가 라이센스가 필요하지 않습니다.

그래서 이것은 내가 지금 가지고있는 유일한 옵션입니다.


2
연결이 끊어진 것 같습니다.
Disillusioned

2

내 솔루션은 여기에 여러 답변이 혼합되어 있습니다.

빌드 서버를 확인하고 Windows7 / NET4.0 SDK가 이미 설치되어 있으므로 경로를 찾았습니다.

C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets`

그러나이 줄에 :

<Import Project = "$ (MSBuildExtensionsPath) \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets"/>

$ (MSBuildExtensionsPath) 는 경로가없는 C : \ Program Files \ MSBuild로 확장됩니다 .

따라서 내가 한 것은이 명령을 사용하여 심볼릭 링크를 만드는 것입니다.

mklink / J "C : \ Program Files \ MSBuild \ Microsoft \ VisualStudio" "C : \ 프로그램 파일 (x86) \ MSBuild \ Microsoft \ VisualStudio"

이 방법으로 $ (MSBuildExtensionsPath)는 유효한 경로로 확장되며 빌드 서버에서만 앱 자체에서 변경이 필요하지 않습니다 (아마도 빌드마다 심볼릭 링크를 생성하여이 단계가 손실되지 않고 문서화되도록 할 수 있음) ").


2

나는 이것을 추가
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

하여 이것을 고쳤다.
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments


2

나는 많은 솔루션을 시도했지만 결국이 대답은 나를 위해 일했다 : https://stackoverflow.com/a/19826448/431522

기본적으로 Visual Studio 디렉토리 대신 MSBuild 디렉토리에서 MSBuild를 호출해야합니다.

또한 스크립트를보다 쉽게 ​​코딩 할 수 있도록 MSBuild 디렉토리를 경로에 추가했습니다.


2

Visual Studio 2017에 오는 사람은 누구나 비슷한 문제가 있었고 15.6.1로 업데이트 한 후 프로젝트를 컴파일 할 수 없었습니다. MSBulild 도구를 설치해야했지만 여전히 오류가있었습니다.

v14.0폴더를 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio동일한 폴더로 복사하여 문제를 해결할 수 있었고 v15.0모든 오류가 해결되었습니다. 이제 내 폴더 구조는 아래와 같으며 두 폴더 모두 동일한 내용을 포함합니다.

여기에 이미지 설명을 입력하십시오


2

빌드 서버의 경우와 같이 MSBuild를 사용하는 경우 나를 위해 일한 것은 다음과 같습니다.

다음을 변경하십시오.

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

에:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

내 Msbuild 명령은 다음과 같습니다 *"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

이것이 누군가를 돕기를 바랍니다.


말할 것도없이, 문제가되는 .csproj, vbproj 파일을 변경해야합니다.
콜린 Q

0

VSTS를 사용하여 프로젝트를 배포하려는 경우 "Hosted VS2017"(또는 18 등) 대신 "Hosted Windows Container"옵션을 확인하면 문제가 발생할 수 있습니다.

여기에 이미지 설명을 입력하십시오


0
  • Microsoft에서 MSBuild 도구를 설치 한 후 환경 변수에서 MSBuild 경로를 정의하여 모든 경로에서 실행될 수 있습니다.
  • notepad ++와 같은 메모장 편집기에서 .csproj 파일을 편집하고
  • 다음 요소를 확인하십시오->
    • 가져 오기를 한 번만 사용하고 작동하는 것을 선택하십시오.
    • 드라이브에 "C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0"폴더가 있거나 "C : \ Program Files (x86)의 MSBuild 대상에서 참조하는 버전이 있는지 확인하십시오. \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "
    • 명령 프롬프트에서 다음 명령을 실행하여 확인하십시오.

C :> msbuild "C : \\ DotnetCi.sln"/ p : Configuration = 릴리스 / p : UseWPP_CopyWebApplication = true / p : PipelineDependsOnBuild = false


0

CI / CD 파이프 라인에서 SQL Server 프로젝트를 빌드하는 데이 문제가 발생했습니다. 사실, 나는 그것을 현지에서 가지고 있었고, 그것을 해결할 수 없었습니다.

나를 위해 일한 것은 일련의 SQL 스크립트에서 SQL Server 데이터 계층 응용 프로그램 패키지 ( )를 생성 할 수 있는 MSBuild SDK를 사용하여 .dacpac새 프로젝트를 만드는 것을 의미합니다. 그러나 Visual Studio에서 SQL Server 개체 탐색기를 통해 라이브 데이터베이스에 연결할 수 있도록 SQL Server 프로젝트를 유지하고 싶었습니다. 나는 이것을 시작하고 실행하기 위해 다음 단계를 수행했다.

  1. .sql데이터베이스 스크립트를 사용하여 SQL Server 프로젝트를 유지했습니다 .
  2. 위 링크의 지침에 따라 대상 프레임 워크가 .NET Standard 2.0인지 확인하는 .NET Standard 2.0 클래스 라이브러리 프로젝트를 작성했습니다.
  3. 내용을 .csproj다음과 같이 설정하십시오 .

    <?xml version="1.0" encoding="utf-8"?>
    <Project Sdk="MSBuild.Sdk.SqlProj/1.0.0">
      <PropertyGroup>
        <SqlServerVersion>Sql140</SqlServerVersion>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    </Project>
  4. SQL Server 2019를 사용하고 있기 때문에 SQL Server 버전으로 Sql140을 선택했습니다 . 사용중인 버전에 대한 매핑을 찾으려면 이 답변 을 확인하십시오 .

  5. 빌드시 SQL Server 프로젝트를 무시하여 로컬에서 중단되지 않도록합니다 (Visual Studio에서는 빌드되지만 VS Code에서는 실패 함).

  6. 이제 .sql파일이 빌드 될 때 파일이 SDK 프로젝트 안에 있는지 확인해야합니다 . CI / CD 파이프 라인에서 SQL Server 프로젝트에서 SDK 프로젝트로 파일을 복사하는 간단한 powershell 루틴을 통해이를 달성했습니다.

복사 항목-경로 "Path.To.The.Database.Project \ dbo \ Tables \ *"-대상 (새 항목 -Name "dbo \ Tables"-유형 디렉토리 -Path "Path.To.The.DatabaseSDK.Project \ ")

추신 : 파일은 루트 또는 일부 폴더의 SDK 프로젝트에 실제로 있어야하므로 .sdkSQL Server 프로젝트 의 파일에 대한 링크가 작동하지 않습니다. 이론적으로 이러한 파일을 사전 빌드 조건으로 복사 할 수 있어야하지만 모호한 이유로이 방법이 작동하지 않았습니다. .sqlSDK 프로젝트에 파일을 가져 와서 SQL Server 프로젝트에 연결 하려고 시도했지만 SQL Server 개체 탐색기와의 연결이 쉽게 끊어 지므로이를 삭제하기로 결정했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.