빌드 서버에서 Visual Studio없이 ASP.NET 4.5 빌드


81

빌드 서버를 설정 한 지 오래되었으므로 뭔가 잊었거나 .NET 4.5가 지난번에 한 버전과 다를 수 있지만 여기에 내 문제가 있습니다.

소스 제어 저장소를 모니터링하기 위해 빌드 서버를 설정하려고합니다. 뭔가 변경 될 때마다 서버가 변경 사항을 가져 와서 프로젝트를 빌드하기를 원합니다. 오류가 없으면 빌드 서버에서 실행되는 웹 사이트에 사이트를 배포하고 싶습니다.

예전에는 .NET 만 설치하면 할 수 있다고 생각했는데이 프로젝트를 빌드하려고하면 "C : \ Program Files \ MSBuild \ Microsoft \ VisualStudio \ v11 .0 \ WebApplications \ Microsoft.WebApplication.targets "가 누락되었으며, 가서 보면 누락 된 것을 알 수 있습니다. 실제로 Visual Studio 11 대상 파일이 없습니다.

많은 생각과 머리를 긁은 후 나가서 .NET 4.5 SDK가 필요한 대상 파일을 설치할 수 있다고 생각한 "Windows 8 / .NET 4.5 SDK"를 얻었습니다. 그러나 어떻게 든 잘못 설치하지 않는 한 그렇지 않습니다. .

따라서 프로젝트를 빌드하려면 빌드 서버에 무엇을 입력해야합니까? 전체 Visual Studio 2012를 설치할 필요가 없습니다.


이 글을 올린 이후로 몇 가지 조사를 해왔습니다. 내가 잘못된 길을 가고 있는지 알려주세요. 이것은 Visual Studio 2010에서도 문제가 된 것처럼 보이며 사람들이이 문제를 몇 가지 방법으로 해결 한 것 같습니다. 하나는 Visual Studio Team Explorer를 설치하는 것이 었습니다. 나는 그것을 시도했지만 내 서버는 Win 2008 r1이고 VSTE2012는 호환되지 않습니다. 조금 무서운 또 다른 해결책은 다른 컴퓨터에서 대상 파일을 복사하는 것입니다. 더 나아졌지 만 이제는 원래 문제와 관련이 있다고 생각하는 참조 어셈블리가 누락되었다는 오류가 발생합니다. 다른 방법이 있습니까?
Zack

3
문제를 해결하는 쉬운 방법은 빌드 서버에 VS 2010을 설치하는 것입니다. 그래도 약간 무딘 도구입니다. 두 번째 방법은 수행중인 작업을 수행하고 다른 컴퓨터에서 대상 및 관련 종속성을 가져 와서 해당 파일 만 서버에 배포하는 것입니다. 이 접근 방식의 위험은 VS 서비스 팩이 복사 한 파일을 변경할 수 있으며 개발자가 업데이트 된 버전을 사용하는 동안 빌드 서버가 해당 대상의 오래된 버전을 사용하게된다는 것입니다.
James Reed

VS2012를 의미합니까? 네. 확인하겠습니다. 그러나 팀 탐색기 2012는 그렇지 않았기 때문에 Win Server 2008 r1과 비교할 수 없다고 가정합니다.
Zack

1
2012 비트를 놓쳐서 미안합니다. 클라이언트 측에서 win 7에서만 작동하므로 서버 2008 r2에만 설치 될 것 같습니다. 빌드 서버에서 OS를 업데이트하는 것이 문제가 없다고 가정합니까?
James Reed

네, 서버 OS 업데이트에 대해 생각하고 있습니다. 나는 그것을 조사 할 것입니다. 그러나 나는 내가 허락 될 것인지 확실하지 않습니다.
Zack

답변:


35

내 문제는 Windows 2008 Box에 Windows 8 용 Windows SDK (소프트웨어 개발 키트) 를 설치하는 것과 관련이 있습니다. 이 페이지에서 더 자세히 읽으면 "Windows Vista 및 Windows Server 2008의 .NET Framework 4.5 SDK 도구"라는 제목이 표시됩니다. 이것은 다음을 알려줍니다.

  1. 지원되는 운영 체제 (예 : Windows 7 또는 Windows 8)에서 Windows 8 용 Windows SDK 설치 관리자를 실행합니다.
  2. 위치 지정 화면에서 다음 옵션을 선택합니다. 별도의 컴퓨터에 설치할 Windows SDK를 다운로드합니다.
  3. 다음 버튼을 누릅니다.
  4. CEIP (사용자 환경 개선 프로그램) 참여 화면의 질문에 답합니다.
  5. 다음 화면에서 .NET Framework 4.5 소프트웨어 개발 키트 기능을 선택합니다. 선택 취소 할 수있는 다른 모든 기능을 선택 취소합니다.
  6. 다운로드 버튼을 선택합니다.
  7. 다운로드 위치 (2 단계에서 지정)로 이동하여 다음 .NET Framework 4.5 SDK 도구 설치 프로그램 파일을 찾습니다. sdk_tools4.msi, sdk_tools4.cab
  8. 이러한 파일을 조직 내의 Windows Vista 또는 Windows 2008 Server 컴퓨터에 복사 할 수 있습니다. 이러한 파일은 Windows Vista 또는 Windows 2008 Server 컴퓨터의 동일한 디렉터리에 복사해야합니다. 참고 : 이러한 파일을 조직 외부 또는 다른 설치 프로그램의 일부로 재배포하지 마십시오.
  9. Windows Vista 또는 Windows 2008 Server 컴퓨터의 경우 여기에서 사용 조건을 검토하십시오.
  10. .NET Framework 4.5가 컴퓨터에 이미 설치되어 있는지 확인하십시오. 그렇지 않으면 www.microsoft.com에서 .NET Framework 4.5를 다운로드하여 설치하십시오.
  11. 관리자 권한으로 명령 프롬프트를 엽니 다.
  12. .NET Framework 4.5 SDK 도구 설치 프로그램 파일이 복사 된 디렉터리로 이동합니다.
  13. 명령 줄을 사용하여 .NET Framework 4.5 SDK 도구를 설치합니다. Msiexec / i sdk_tools4.msi VSEXTUI = 1

감사합니다 Swampy. 이 답변을 올바른 것으로 표시하겠습니다.하지만 몇 가지만 언급하고 싶었습니다. 나는 이것을 테스트하지 않을 것이지만 당신의 대답은 효과가있을 것 같습니다. 대신 우리는 서버를 업그레이드하고 있습니다. 둘째, 이렇게하면 패치와 서비스 팩이 출시 될 때 구성 요소가 업데이트 될 수 있었는지 알고 계십니까?
Zack

Server 2008에서 이러한 지침을 따랐지만 불행히도 여전히 .nlp 파일이 표시되고 mscorlib가 웹 배포를 사용하는 배포에 포함됩니다
Nathan

1
대단히 감사합니다. Jenkins를 사용하고 있으며 .NET 4.5를 사용하도록 프로젝트를 업데이트했습니다. 내 작업을 Jenkins로 푸시 할 때 잘못된 버전에 대해 불평하지 않고 System.Runtime 어셈블리 누락에 대해 불평합니다. 이 솔루션은 자동화하기가 더 쉽기 때문에 파일의 수동 복사보다이 솔루션을 선호합니다.
Ido Ran

Windows Server 2012를 사용하고 있으며 Windows 8 (Development Machine)에 VS2012가 있습니다. 만 나는 MSBuild를 "C에 대한 목표를 필요 : \의 Program Files (x86) \ MSBuild를 \ 마이크로 소프트 \으로 VisualStudio \ V11.0 \ SDK가 훨씬 더 포함되지 않습니다.?
Kiquenet

84

Visual Studio없이 CI 서버에서 실행하려면 개발 컴퓨터에서 CI 서버의 동일한 위치로 몇 개의 폴더 만 복사하면됩니다. SDK를 설치할 필요가 없습니다.

VS 2015 :

  • C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web
  • C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications

VS 2013 :

  • C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ Web
  • C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0 \ WebApplications

VS 2012 :

  • C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web
  • C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications

VS 2010 :

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

.NET 4.6 :

  • C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.6

.NET 4.5.2 :

  • C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2

.NET 4.5.1 :

  • C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.1

.NET 4.5 :

  • C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5

.NET 4.0.1 :

  • C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0.1

.NET 4.0 :

  • C : \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0

또는 Matt가 제안한 대로 프로젝트의 하위 디렉터리에 복사하고 <MSBuildExtensionsPath32>MSBuild (일반적으로 .csproj또는 .vbproj) 파일 의 위치를 변경할 수 있습니다.

이 작업을 마치면 프로젝트가 컴파일됩니다.

또한 VisualStudioVersion 환경 변수를 사용중인 Visual Studio 버전 (VS2010의 경우 10.0, VS2012의 경우 11.0, VS2013의 경우 12.0, VS2015의 경우 14.0)으로 명시 적으로 설정하여 구성에서 올바르게 설정되었는지 확인해야합니다.


6
이것은 우리에게 +1 문제를 해결했습니다. maven / java에서 오는 것은 견과류입니다.
NimChimpsky 2014

.NET Framework와 함께 설치되지 않은 참조 어셈블리? MSBuild는 대상이 아닙니다. 참조 어셈블리를 잘 모르겠습니다. 그렇다고 생각합니다.
Kiquenet 2014 년

C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0을 개발자 컴퓨터에서 빌드 컴퓨터의 동일한 폴더로 복사하면 Team City가 .NET 4.5 솔루션을 컴파일 할 수 없었지만 .NET 4.0이 나에게 트릭이 생겼습니다. 솔루션이 이전에 컴파일되었습니다.
Tore Aurstad

참조 어셈블리의 경우 +1. Teamcity 및 MSBuild14를 사용하여 4.5.1 프로젝트를 빌드 중이며 빌드 에이전트 컴퓨터에서 누락 된 링크였습니다.
N. Warfield

이것은 어리석은 문제이지만 그것에 대한 간단한 해결책입니다.
cori

25

에서 MSDN :

Windows SDK는 더 이상 완전한 명령 줄 빌드 환경과 함께 제공되지 않습니다. 컴파일러를 설치하고 환경을 별도로 구축해야합니다. 컴파일러와 빌드 환경이 포함 된 완전한 개발 환경이 필요한 경우 Windows SDK의 적절한 구성 요소가 포함 된 Visual Studio 2012 Express를 다운로드 할 수 있습니다.

이 문제를 해결하려면 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5Visual Studio 2012가있는 개발 머신에서 빌드 에이전트로 폴더를 복사해야했습니다 . 이 작업 후 Team City는 더 이상 오류를보고하지 않았고 mscorlib.dll이 bin 폴더에 출력되지 않았습니다.


감사합니다. 이것은 sdk를 다운로드 할 필요없이 저를 위해 수정되었습니다. (또는 허용 대답의 단계 중)
코헨

대단해, 내 하루를 구했다!
Magnus

1
이것은 확실히 받아 들여진 대답이어야합니다. 이미 ref 어셈블리가있는 기계가 있기 때문에 훨씬 쉽습니다.
Josh Kodroff

1
@artfulhacker VS 2012 및 Win 8 SDK는 모두 Win2k8 R1에 설치되지 않습니다. R1에있는 경우 참조 어셈블리를 복사해야합니다.
Josh Kodroff

1
그러나이 디렉터리에는 msbuild.exe의 복사본이 없습니다. 내 dev PC (빌드 머신이 아님)에 VS2012를 설치했는데 여전히 4.5 버전이 표시되지 않습니다.
ashes999 2013 년

12

다운로드 페이지에서 설명하는대로 Microsoft Build Tools 2013 은이 경우에 도움이됩니다.

컴퓨터에 Visual Studio가 설치되어 있지 않은 경우 Build Tools 2013을 사용하여 관리되는 응용 프로그램을 빌드 할 수 있습니다. Visual Basic 및 C # 컴파일러도이 다운로드에 포함되어 있습니다. (이전 버전에서는 이러한 도구가 독립 실행 형 .NET Framework에 포함되었습니다.)


1
조금 더 설명하면 동료 프로그래머가 참조 링크가 작동하는 방식을 이해하는 데 도움이 될 수 있습니다.
NJInamdar 2014-06-16

VS 2013 및 VS 2012 용 Microsoft Build Tools 2013 ? 어쨌든 Microsoft Build Tools 또는 Visual Studio Agents 2012를 더 잘 설치 하십시오. stackoverflow.com/a/20373256/206730 ?
Kiquenet 2014 년

8

내 부서. Win 7 빌드 머신에 설치된 것에 최소한의 접근 방식을 취하는 것을 좋아합니다. 그러나 잠재적 인 레지스트리 키 문제로 인해 파일 / 폴더를 복사하고 붙여 넣는 것을 좋아하지 않습니다. VS 2013을 설치하는 대신 다음과 같은 훨씬 작고 무료 구성 요소를 설치했습니다. 이제 개발 팀은 VS 2013 웹 앱을 성공적으로 빌드 할 수 있습니다.


정말 고맙습니다. 나는 항상 어떻게 얻을 수 있는지 궁금 Microsoft.WebApplication.targets했고 격리 된 셸에 대해 전혀 몰랐습니다!
William Gross

6

Visual Studio 에이전트로이 문제를 해결합니다.

Visual Studio Agents 2012를 설치해 볼 수 있습니다.

http://www.microsoft.com/en-us/download/details.aspx?id=38186


VS2013에서는 작동하지 않습니다. Agent와 Controller를 설치했지만 C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v12.0이 생성되지 않았습니다
Guillaume

1
Visual Studio 2013 용 에이전트 도 물론 사용할 수 있습니다. VS 2012가 아닌 VS 2013을 염두에두고이 답변을 읽는 사람들을 위해.
J0e3gan 2014

2
실제로 작동합니다! Visual Studio 2013 Shell (격리 됨) (x86) 및 Visual Studio 2013 Shell (
통합됨

@Andrii Visual Studio Agents 2012가 설치되어 있어야합니까? 또는 VS Agent를 설치하지 않은 Visual Studio 2012 및 2013 Shell (격리 됨) (x86) 및 Visual Studio 2012 및 2013 Shell (통합됨) (x86) 있습니까?
Kiquenet 2014 년

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