programing

'게시에 실패했습니다.' 그러나 빌드에 성공했습니까?

codeshow 2023. 8. 10. 21:46
반응형

'게시에 실패했습니다.' 그러나 빌드에 성공했습니까?

Visual Studio 2008을 사용할 때 "웹 사이트 게시"를 사용하면 응용 프로그램이 올바르게 빌드되지만 "게시 실패" 메시지가 표시됩니다.

enter image description here

이에 대한 가능한 이유는 무엇이며, 어떻게 예방할 수 있습니까?

저도 같은 문제가 있었습니다.로그와 출력에 오류나 오류가 표시되지 않기 때문에 문제를 식별하는 악몽입니다.단순히 "빌드: 39 성공"과 "게시: 1 실패"를 받습니다.

문제가 있는 패키지를 식별할 때까지 모든 NuGet 패키지를 한 번에 하나씩 체계적으로 제거(및 참조하는 코드를 제거)하여 문제를 해결했습니다.

이것은 오랜 시간이 걸립니다!

하지만, 제 대답은 마이크로소프트였습니다.넷. 컴파일러.

프로젝트에서 어떻게 그런 결과를 얻었는지는 모르겠지만, 패키지를 제거하자마자 모든 것이 다시 정상적으로 게시됩니다.

편집 - 이 문제는 VS 2008, 2012 및 2015에서 발생하지만 2017년에는 발생하지 않습니다.

사용해 볼 수 있습니다.

  1. 웹 응용 프로그램에 대해 사전 컴파일을 수행합니다.

  2. 대상 디렉터리(IIS 또는 실제 파일 폴더의 가상 디렉터리)를 지우고 웹 응용 프로그램의 모든 파일을 대상 디렉터리에 배포합니다.

출력 창에서 게시 웹 사이트 작업이 실패하는 단계를 확인할 수 있습니다.예를 들어, 첫 번째 단계에서 사전 컴파일 시에만 발생하는 오류가 있으면 1단계가 실패합니다.또는 대상 디렉터리에 잘못된 구성이 있는 경우도 있습니다.예를 들어 IIS virtual dir가 올바른 ASP로 설정되지 않았습니다.NET 버전 또는 일부 오래된 파일이 잠겨 있어 파일을 지울 수 없습니다.대부분의 경우 인증 설정과 같은 IIS 측 구성 문제로 인해 게시가 실패합니다.

소스 링크

+,W 를 눌러 출력 창을 열 수 있습니다.

VS를 관리자 권한으로 실행해야 대상 디렉토리에 쓸 수 있기 때문일 수 있습니다.

출력 메시지를 확인하십시오. 문제를 해결하는 데 도움이 될 것입니다.

프로젝트를 복사해야 했습니다.C:\a\그리고 출판하는 것보다.저는 긴 경로의 문제가 의심됩니다.이상하지만, 저를 위해 일했습니다.

결론은 다음과 같습니다.다른 VS 버전을 사용해 보고 이 기능이 있는지 확인합니다.

이것이 저를 위해 한 일입니다.

VS 2013 Pro and Visual Studio 2015 Community를 보유하고 있습니다.저는 제 MVC 프로젝트를 수행하기 위해 이것저것을 사용했고 모든 것이 괜찮았습니다.그런데 갑자기 VS 2013이 제대로 구축될 것임에도 불구하고 게시하지 못했습니다.일부 어리석은 오류 외에는 오류가 없습니다... 코드가 모든 경로에서 반환되지 않습니다...

그래서 제가 VS 2017에서 그것을 열었을 때 - 그것은 같은 프로젝트를 잘 게시했습니다.저는 편집 문제를 의심하고 있습니다. 왜냐하면 그것이 실패할 단계였기 때문입니다.

시간을 좀 절약하는 데 도움이 되길 바랍니다.

게시하기 전에 대상 폴더를 수동으로 비워야 합니다.또는 파일을 삭제할 수 없어 게시가 실패하는 경우가 있습니다.

Visual Studio의 다른 버전에서 이러한 현상이 발생하는지는 확실하지 않지만 적어도 2015 Professional Edition에서는 Packages Manager를 사용하여 솔루션의 모든 Nuget 패키지를 업데이트하려고 할 때 문제가 발생합니다.

@SimonGoldstone이 지적했듯이 이 문제는 "Microsoft" 패키지로 인해 발생합니다.넷 컴파일러".기본적으로 패키지는 새 웹 응용 프로그램을 만드는 동안 솔루션에 추가됩니다.기본 버전 1.0.0에서는 문제가 발생하지 않습니다.2.4.0까지는 최신 버전으로 테스트를 계속할 수 있었고 모든 것이 정상적으로 작동하지만 2.6.0부터는 모든 것이 시작됩니다.업데이트가 엄격하게 필요하다면 위의 패키지를 버전 2.4.0까지 업데이트하는 것을 추천합니다. 조사를 해본 결과, 2.4.0 이후 버전의 버그가 일부 도입되어 장기적으로 수정되지 않는 것 같습니다.하지만 궁금한 것은 기본적인 품질 관리 체크 포인트가 없는 Nuget에 이 문제가 어떻게 포함되는지입니다.

이에 대한 제안된 해결책은 여러 가지가 있습니다.나는 그들이 그 문제를 너무 복잡하게 만들고 있다고 생각합니다.다음과 같은 이점이 있었습니다.

  1. 솔루션에서 obj(릴리스 또는 디버그) 폴더 찾기
  2. 릴리스 또는 디버그 폴더에서 'AspnetCompileMerge' 폴더의 내용을 삭제합니다.

이제 출판을 시도해 보십시오.

재구축을 시도하고, 내 솔루션의 다른 프로젝트를 올바르게 게시할 수 있게 하고, 매핑된 네트워크 드라이브로 푸시하는 대신 게시 위치를 C: 드라이브(로컬로 연결됨)로 변경한 후에도 여전히 오류 출력이 다음과 같이 표시되는 문제가 발생했습니다.

========== Build: 5 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

제 솔루션은 x86을 대상으로 하지만 Git Merge 중에 이 프로젝트의 프로파일이 Any CPU로 전환된 것 같습니다. 프로젝트에 대한 x86 프로파일을 생성하고 게시 목표와 활성 솔루션 구성의 대상과 일치시킨 후 다시 게시할 수 있었습니다.

Project BIN 디렉토리를 확인합니다.페이지 또는 컨트롤의 DLL이 있어야 합니다.게시하는 동안 다시 만들어야 합니다.따라서 제외하거나 제거합니다.

저는 오늘 같은 문제에 부딪혔는데, 그것은 이미지를 찾기 위해 이미지 폴더를 열었을 때 생성된 Thumbs.db 파일 때문이었습니다.파일을 삭제하고 프로젝트를 성공적으로 배포했습니다.이것이 같은 상황에 있는 다른 누군가에게 도움이 되기를 바랍니다.

게시 프로필을 삭제하고 다른 프로필을 만듭니다.나를 위해 일했습니다.

제 경우, 매핑된 네트워크 드라이브의 디렉터리에 게시하는 중이었는데 출력 패널/창에 해당 위치가 없음이 표시되었습니다.경로가 올바르고 드라이브에 완전히 액세스할 수 있습니다.... 버튼을 사용하여 Visual Studio에서 게시할 경로를 재설정하자 문제가 해결되었습니다.

저는 dist 폴더가 잠겨 있어서 간단했습니다.잠금 해제기로 잠금을 해제하고 게시를 다시 시작했습니다.

web.config에 등록된 여러 사용자 컨트롤과 .ascx 파일 헤더에 ClassName이 있습니다.일반 빌드의 경우 모든 것이 정상적으로 작동하지만 게시를 통해 해당 클래스 이름이 더 이상 인식되지 않습니다.어느 시점에서 오류가 일반 코드 파일이 아니라 게시용 임시 디렉토리의 복사본에 있다는 것을 알게 되었습니다.

게시 중 사전 컴파일을 설정했습니다(설정 > 파일 게시 옵션에서 확인 가능).그 옵션을 해제한 것이 저에게 효과가 있었습니다.

VS 2017에서도 웹사이트 프로젝트와 같은 문제가 있었습니다.했습니다.Error CS0012: The type 'System.Net.Http.HttpMessageHandler' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.제 모든 프로젝트에는 이미 System에 대한 참조가 있었습니다.스러웠습니다.http. 그래서 정말 혼란스러웠습니다.

고치기 위해 시스템을 복사해야 했습니다.Net.Http.dll을 내 웹 사이트 프로젝트/bin 폴더에 저장하여 게시할 수 있습니다.시스템을 찾았습니다.다른 프로젝트의 참조(클래스 라이브러리)를 확인한 다음 시스템을 확인하여 Net.Http.dll.Net.Http.dll 속성 및 경로 보기(C:\Program Files(x86)\Reference Assembly)\Microsoft\Framework.네트워크 프레임워크\v4.6\시스템.Net.Http.dll).

제가 늦었다는 것을 알지만 이 쿼리를 검색하는 사람에게 사용해야 한다고 생각합니다.

모든 너겟 패키지를 제거한 다음 솔루션을 정리하고 다시 빌드한 다음, 이제 게시를 클릭하면 게시가 시작되고 올바르게 작동합니다.

프로젝트 파일 및 관련 프레임워크의 버전을 변경한 사용자가 있는 경우.그런 다음 이런 유형의 문제가 발생했습니다.

로 가시기 바랍니다"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web"비주얼 스튜디오 게시 위치 및 빌드 설정 -> 편집 -> 주석 모든 파일 섹션의 강제 복사.

enter image description here

찾을 수 없는 파일이 하나 있습니다.컨텐츠 폴더에 있는 jpg를 대체하기 위해 png 파일을 복사했습니다. 파일 형식 확장자를 제외한 이름은 동일합니다.프로젝트는 정상적으로 빌드되었지만 빌드 및 게시를 거부했습니다. 파일 이름을 찾을 수 있도록 파일 확장자를 변경하여 작동했습니다. 놀라운 오류는 없습니다. 하나도 틀렸고 다른 모든 것은 오류는 없었습니다.

제 경우는 Visual Studio가 Azure에 로그인되어 있지 않았지만, 이에 대한 표시는 제공하지 않았습니다.게시 프로필을 편집하고 "연결 확인"을 클릭한 다음 "저장"을 클릭하여 작동했습니다.

enter image description here

enter image description here

저는 피처 브랜치에서 일하고 있었지만 실패했습니다.마스터 분기로 전환하고 피쳐 하나를 삭제한 후 다른 피쳐를 작성했습니다.효과가 있었습니다.

ASP에 문제가 있었습니다.VS 2017 Community Edition을 사용하는 4.6.1 버전을 대상으로 하는 NET 애플리케이션.그 문제는 갑자기 나타나기 시작했습니다.빌드가 성공하면 로컬에서 프로젝트를 실행할 수 있습니다.그러나 게시 프로필을 사용하여 앱을 Azure에 게시하려고 했을 때 네임스페이스가 없거나 클래스를 찾을 수 없는 등의 빌드 오류가 발생했습니다.

에게 효과가 가▁the▁deleting다▁what것입▁for니▁is▁worked제게를 삭제한 것입니다.Release모든 프로젝트의 폴더를 선택한 다음 앱을 게시할 수 있습니다.

저도 같은 문제가 있었습니다.디버그 모드를 릴리스 모드로 전환하여 수정하고 치료한 다음 디버그 모드로 전환하여 게시를 시작했습니다.이것으로 저는 그 문제를 해결했습니다.

저는 비주얼 스튜디오 2022를 사용하고 있습니다.

제 문제의 원인은 조금 달랐지만 위에 언급된 몇 가지 이유와 유사합니다.

지정된 응용프로그램의 로컬 복사본을 폐기하고 GIT 하드 재설정을 수행하여 문제의 리포지토리에서 최신 정보를 가져왔습니다.그 결과 web.config 파일이 삭제되었습니다(다양한 이유로 GIT 저장소에 저장되지 않았습니다).

이로 인해 다양한 NuGet 패키지에 대한 구성 정보가 "잃어버린" 상태가 됩니다(web.config에 저장되었기 때문).

다행히 web.config를 "백업"했기 때문에 데이터베이스에 연결할 수 없어 마이그레이션에 실패했다는 것을 알게 되면 교체할 수 있었습니다.

web.config를 수정한 후 게시를 다시 시도했는데 모든 것이 완벽하게 작동했습니다.

웹 게시 대화 상자에서 "등록하기 전에 모든 기존 파일 삭제"를 선택하는 경우 Visual Studio가 관리자 권한으로 시작되었는지 확인합니다.Visual Studio를 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행을 클릭합니다.이게 도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/8120812/publish-failed-but-build-succeeded

반응형