"대상 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.