"대상 GatherAllFilesToPublish가 없습니다"라는 오류가 발생하는 이유는 무엇입니까?


78

최근에 Visual Studio 2010 서비스 팩 1 용 새 Azure 개발 도구를 설치했습니다. 기존 웹 사이트를 게시하려고 할 때 (파일 시스템 배포 사용) 다음 오류가 발생합니다.

대상 "GatherAllFilesToPublish"가 프로젝트에 없습니다.

아무도 내가 뭘 놓치고 있는지 말해 줄 수 있습니까?

감사


저도 같은 문제가 발생하고있어, 나는 도구를 unistalled했지만 아직 해결되지 수
— 에두아르도 CAMPANO을

이는 파일 시스템을 로컬로 빌드 할 때도 발생합니다. Sayed의 답변의 뜨거운 것이 나를 위해 일했습니다.
— Adam Zuckerman 2014

이것은 나를 위해 작동하지 않았다 :( 나는 VS 2013을 사용하고 있습니다.
— kulNinja

VS2019와 함께 여기에 올-문제가 여전히 존재합니다.
— 기독교

답변:


82

문제가 뭔지 안다고 생각합니다. Azure SDK 비트를 설치하면 일부 VS Web Publish 업데이트가 설치됩니다. 이 중 하나는 다음 위치에서 파일을 업데이트합니다.

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

파일에 업데이트 된 타임 스탬프가있는 경우 (어떤 이유로 든) 설정이 정의 된 방식에 따라 새 구성 요소를 설치할 때 파일이 업데이트되지 않습니다.

이 문제를 해결하려면 아래 단계를 따르십시오.


1
Sprinkle이 말했듯이 파일은 v10.0 폴더에 있지만 트릭을 수행했습니다! 감사!
— Zenuka

2
Microsoft.WebApplication.targets를 변경하지 않았지만 HotFix가 저에게 효과적이었습니다.
— Brian

4
핫픽스를 적용하고 Visual Studio를 닫은 후 다시 열어서 적용했습니다.
— Jeff

1
안타깝게도이 답변이 2010 대 에만 적용 되지만이 오류에 대한 검색 결과를 가져 갔다 는 것입니다. 다른 버전의 VS에 대한 솔루션이 있습니까?
— George Mauer 2015 년

3
나를 위해 VS를 닫은 후에도 KB2591016이 적용되지 않거나 컴퓨터의 다른 조건에 의해 차단되었다고 말할 것입니다
— Iman

72

이 문제가 있었고 다음을 추가하여 수정되었습니다.

<Target Name="GatherAllFilesToPublish">
</Target>

프로젝트 파일에.


1
이것은 나를 위해 일했지만 Backup이라는 추가 폴더를 만들고 파일을 백업합니다. Damn VS 2013은 버그가 있습니다
— PhillyNJ

1
이것은 VS2013의 문제를 해결했습니다. @PhilVallone 언급 여분의 백업 폴더를 참조하지 마십시오
— 알렉산더 Puchkov

6
나는 그것을 시도했다. 오류가 사라졌지 만 모든 .cs 파일도 게시되었습니다. 나는 스텁 만 추가하기 때문이라고 생각합니다. 이 답변은 근본 문제에 대한 수정이 아니며 해결 방법입니다.
— chiccodoro

2
나를 위해 일했습니다. 대상을 추가 할 때 주석을 달지 않아야합니다.
— kulNinja

2
이것은 나에게도 문제를 해결했습니다. 모두가 이해할 수 있도록 구현하려면 Visual Studio에서 프로젝트 (솔루션 아님)를 마우스 오른쪽 단추로 클릭하고 "프로젝트 언로드"를 선택한 다음 다시 마우스 오른쪽 단추로 클릭하고 "<프로젝트 이름> 편집"을 선택한 다음 이 <Target ....>을 파일에 붙여넣고 저장하고 파일을 닫은 다음 다시 마우스 오른쪽 버튼을 클릭하고 "Reload Project"를 선택합니다. 그런 다음 게시를 다시 테스트하고 작동하는지 확인합니다.
— mknopf

46

이것은 나를 위해 일했습니다. 모든 파일을 수집하여 오류를 게시하십시오.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 편집 (프로젝트 이름) .csproj를 선택합니다. (예 : 메모장에서 편집)
  2. 찾다 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  3. 줄 위에 다음을 추가하십시오.

    <PropertyGroup> 
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion>
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
    </PropertyGroup>
    
  4. 프로젝트를 저장하고 다시로드합니다.


13? 왜 이것이 효과가 있는지 모르겠습니다. 실제 버전 12의 최신 Visual Studio 2013이 아닌가요?
— Mathias Lykkegaard Lorenzen

2
그게했다. 저는 VS 2013을 사용하고 있습니다.
— PhillyNJ

1
내 VS의 버전을 사용했습니다. $ (VisualStudioVersion)이 이미 정의되어 있어야하므로 해당 줄을 건너 뛸 수 있습니다. VSToolsPath는 실제로 나를 위해 해준 것입니다.
— Matt DeKrey

3
이것은 나를 위해 그것을 고쳤습니다. VS2013에서 ASP.NET MVC 프로젝트
— Jaans

3
Windows를 새로 설치할 때 VS2015를 100 % 새로 설치할 때이 오류가 발생했습니다. 이 게시물은 13.0을 14.0으로 변경해야한다는 점을 제외하고는 나를 위해 수정했습니다. @PhillyNJ에게 감사드립니다!
— 라운지 :

9

이러한 설치를 제거하면 문제가 해결되었습니다.

  • Microsoft 웹 게시-Visual Web Developer Express 2010
  • Microsoft 웹 게시-Visual Studio 2010

참고


나는이 게시물의 다른 모든 것을 시도했습니다 ... 이것이 답으로 표시되지 않은 것에 매우 놀랐습니다. 감사합니다 :)
— Sean Haddy 2014 년

1
난 비주얼 스튜디오 2015을 실행하는이 프로그램의 아무도 없어하지 않습니다
— 이만

9

VS 2017 에서이 문제가 발생하여 여기에 제안 된대로 csproj 파일을 수동으로 변경하려고 시도했지만 제안 된 수정 사항 중 어느 것도 저에게 효과가 없었습니다. 이 너겟 패키지를 보았습니다. 그것은 나를 위해 일했습니다.

MSBuild.Microsoft.VisualStudio.Web.targets


정말 고맙습니다! 이것은 나를 위해 일했습니다. 그리고 나는 그것이 THOSE 일 중 하나가 될 것이라고 생각했습니다.
— Timothy Kanski

감사합니다! 프로젝트 파일에 대상 노드를 추가하라는 위의 제안에는 너무 많은 파일이 포함되어 있으며 해결책이 아니라 해결 방법이라는 의견에 동의합니다. 이 Nuget 패키지를 설치 한 후 예상대로 정확하게 게시되는 것 같습니다. 다시 한 번 감사드립니다!
— zpert 2010 년

5

ASP.Net 응용 프로그램을 Windows Azure에 게시하려고 할 때 비슷한 문제가 발생했습니다. 많은 시행 착오 끝에 마침내 이것은 솔루션 저에게 효과적이었습니다. 파일 이름을 바꾸거나 핫픽스 / 패치를 설치 / 다시 설치할 필요가 없습니다. 수행해야 할 작업은 다음과 같습니다.

워드 패드 / 메모장에서 ASP.Net 프로젝트 파일 (.csproj)을 열고 다음과 비슷한 줄을 찾습니다.

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(Solutions.VSVersion)' == '8.0'" />

아래 주어진 줄로 바꿉니다.

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

대답 하지 않는 방법을 더 이해하려면 이 stackoverflow.com/help/deleted-answers 를 읽으십시오 . 즉 : "기본적으로 질문에 대답하지 않는 답변": 외부 사이트에 대한 링크 이상
— Radim Köhler 2013-09-26

1
당신은 내 하루를 구했습니다! 나는 다른 모든 답변을 시도했지만 아무것도 해결되지 않았습니다. 어떤 이유로 든 내 csproj 파일에서 줄에는 리터럴 형식의 속성이 포함되어 있음이 밝혀졌습니다 Conditon="false". 또한 작업을 시작하기 전에 프로젝트를 정리하고 다시 빌드해야했습니다.
— chiccodoro

5

VS2017과 동일한 문제입니다. 이것을 시도해 볼 수 있습니다.

  1. 프로젝트를 언로드하고 csproj 파일을 편집합니다.
  2. "WebApplication.targets"키워드 검색

     <Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
    

    이 줄을 주석 처리하거나 제거합니다 ( "조건"에 따라 두 줄일 수 있음).

  3. 프로젝트 저장 및 다시로드

이 단계에서는 약 500M의 패키지를 설치하라는 메시지가 표시됩니다.

그 후 프로젝트를 다시로드하면 작동합니다!

VS 2017을 설치할 때 일부 구성 요소를 놓친 것 같습니다.

또한 MSBuild 경로는 VS2017에서 상당히 다르지만 csproj 파일에서 상대 경로를 사용하기 때문에 문제와 관련이 없을 수도 있습니다.


가장 쉬운 방법입니다. 감사!
— Antonín Procházka

4

나는 오래된 질문에서 이것을 알고 있지만 최근에 그것을 만났고 여기에 내가 어떻게 해결했는지가 있습니다.

배경 : VS studio 13으로 업그레이드 한 오래된 프로젝트가 있습니다. 프로젝트 파일이 제대로 업그레이드되지 않은 것 같습니다.

csproj 파일에 VS v10.0에 대한 참조가 있지만 실제로 "v12.0"인 VS 13을 실행하고 있습니다.

그래서 csproj 파일에 "v10.0"폴더가 아닌 "v12.0"폴더를 사용하도록 지시했습니다.

이것이 내가 가진 것입니다.

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

이것이 내가 그것을 변경 한 것입니다.

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

이제 파일 시스템에 대한 게시가 작동합니다!


3

비슷한 문제가 있었고 Sayed에서 제공하는 단계를 사용하여 해결했습니다.

이름을 바꾼 파일은 v10.0 디렉토리에 있습니다.

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

거기에 있던 원본 파일은 2011 년 1 월 18 일에 .bak 확장자로 이름을 바꾼 후 KB2591016을 다시 설치 한 후 게시가 다시 작동하는 것으로 보입니다. Microsoft.WebApplication.targets 파일의 새 날짜는 이제 2011 년 8 월 11 일입니다.


3

Visual Studio 2013 (및 2015)에서 동일한 문제로 어려움을 겪고 있습니다.

저에게 중요한 수정 사항 VSToolsPath은 어떤 이유로 든 프로젝트 파일에 누락 된 속성 설정 을 추가 하는 것이 었습니다.

나는 이것을 <PropertyGroup>지시문에 추가했습니다 .

<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>

참고로 : 내 프로젝트 파일도 파일의 v10.0 버전을 참조 Microsoft.WebApplication.targets하지만 괜찮은 것 같습니다.


2

나는 같은 오류가 있었다. 어쩐지이 줄이 없어졌습니다.

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

바로 아래에 추가했습니다.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

이제 잘 작동합니다.


제 경우에는 <Import Project = "$ (MSBuildToolsPath32) \ Microsoft.CSharp.targets"/>
— Joy Acharya

2

VS2013에서 동일한 문제가 발생했습니다. 내가 찾은 해결책은 새로운 빈 웹 응용 프로그램 프로젝트를 만들어 이전 웹 사이트 프로젝트로 다음 줄을 복사 할 수 있다는 것입니다. 맨 위에 :

<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </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

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 편집 (프로젝트 이름) .csproj를 선택합니다. (예 : 메모장에서 편집) 줄 위에 다음을 추가합니다.

13.0 $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) 프로젝트를 저장하고 다시로드합니다.

이것은 정말 나를 위해 일합니다, 감사합니다


2

Visual Studio 2017의 경우-.csproj 파일의 블록 뒤에 추가해야합니다. 메모장을 사용하여 ".targets"를 찾아서 찾습니다.

나는 새로운 VS 2017 프로젝트를 만들었고 이것은 나를 위해 일하고 있습니다 (경고 없음).

  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </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" />
  <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
  </Target>

2

저도 같은 문제를 가지고 : 나는에서 프로젝트를 생성 VS 2010하고,에서 게시했다 VS 2019. 여기에있는 해결책 중 어느 것도 나를 위해 일하지 않았으며 약 하루 동안 문제를 해결했습니다.

이 링크에서 작업 한 내용 : http://www.dotnetxp.com/visual-studio-error-publish-target-gatherallfilestopublish-not-exist-project/

이것이 내가 한 일입니다.

** 언로드 된 문제가되는 프로젝트.

** 텍스트 편집기에서 csproj 파일을 엽니 다.

**이 줄 찾기

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

이것으로 교체하십시오. 사용중인 16.0버전 (vs2019)이기 때문에 사용합니다.

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

** 프로젝트를 다시로드하고 게시합니다.

매력처럼 작동했습니다.


1

Sayed의 솔루션은 VS2012를 사용하여 업그레이드 된 내 프로젝트에서 작동하지 않았습니다. 그러나 이것은 효과가 있었다


1

VS2012 (Visual Studio 2012)에서 편집하는 경우 VS2010 프로젝트를 사용해보십시오. 다음에서 csproj 파일을 편집합니다.

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

그리고 다음으로 변경하십시오.

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

1
줄은 <Import Project = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets"condition = 'false'/>와 같을 수 있습니다. @SushiGuy에게 감사드립니다
— Kashif R

0

제 측에서는 문제를 재현 할 수 없으므로 SDK를 다시 설치해 보시기 바랍니다.

새 SDK를 설치하기 전에 이전 SDK를 완전히 제거하십시오.

친애하는,

Ming Xu.


도구를 완전히 제거하고 다시 설치했지만 작동하지 않는 것 같습니다. 새 도구 (.NET 용 Windows Azure SDK)를 완전히 제거하고 Visual Studio 2010 SP1의 이전 (현재) 게시 기능을 다시 사용했습니다.
— Joe

1
왜 모든 것이 그렇게 버그가 있습니까? 진지하게. 나는 마이크로 소프트로부터 더 많은 것을 기대했다.
— Mathias Lykkegaard Lorenzen 2014

0

내가 수정 한 동일한 문제. 일부 파일이 솔루션에 누락되었는지 확인하십시오. 다음과 같은 오류가 발생하면Error - The target "GatherAllFilesToPublish" does not exist in the project.다음 .proj 파일을 열고이 줄을 삭제하십시오.<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

실제 오류 또는 누락 된 파일을 솔루션으로 가져옵니다.

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