programing

"GatherAllFilesToPublish 대상이 존재하지 않습니다" 오류가 표시되는 이유는 무엇입니까?

telebox 2023. 4. 27. 22:09
반응형

"GatherAllFilesToPublish 대상이 존재하지 않습니다" 오류가 표시되는 이유는 무엇입니까?

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

게시할 "GatherAllFilesToPublish" 대상이 프로젝트에 없습니다.

누가 제가 무엇을 놓쳤는지 말해줄 수 있나요?

감사해요.

저는 무엇이 문제인지 알 것 같습니다.Azure SDK 비트를 설치하면 일부 VS Web Publish 업데이트가 설치됩니다.이 중 하나는 다음 위치에서 파일을 업데이트합니다.

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

설정이 정의된 방식에 따라 파일에 업데이트된 타임스탬프가 있는 경우(이유에 관계없이) 새 구성 요소를 설치해도 파일이 업데이트되지 않습니다.

이 문제를 해결하려면 다음 단계를 수행해야 합니다.

  • 의 이름을 .Microsoft.WebApplication.targetsMicrosoft.WebApplication.targets.bak
  • http://go.microsoft.com/fwlink/ ?LinkId=253458에서 exe를 사용하여 설치/복구합니다.

이 문제가 있었는데 다음을 추가하여 해결했습니다.

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

프로젝트 파일로 이동합니다.

작업은 게시할 모든 파일 수집 오류를 수정하는 데 사용되었습니다.

  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. 프로젝트를 저장하고 다시 로드합니다.

VS 2017에서 이 문제가 발생하여 여기서 제안한 대로 csproj 파일을 수동으로 변경하려고 했지만 제안된 수정 사항 중 어떤 것도 제대로 작동하지 않았습니다.이 너겟 꾸러미를 우연히 발견했습니다.그것을 설치하는 것은 저에게 효과가 있었습니다.

MS 빌드.마이크로소프트.Visual Studio.웹.대상

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

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

언급

VS2017에서도 동일한 문제가 발생했습니다.당신은 이것을 시도할 수 있습니다, 그것은 저에게 효과가 있었습니다.

  1. 프로젝트 언로드 및 csproj 파일 편집
  2. 키워드 "WebApplication.targets" 검색

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

    이 줄을 코멘트 또는 제거합니다. ("조건"에 따라 두 줄이 될 수 있습니다.)

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

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

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

VS 2017을 설치할 때 일부 구성 요소가 누락되는 것 같습니다.

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

ASP를 발행하고 싶을 때도 비슷한 문제가 있었습니다.Windows Azure에 대한 Net 응용 프로그램입니다.많은 시행착오 끝에 마침내 이 해결책이 저에게 효과가 있었습니다.이렇게 하면 파일 이름을 바꾸거나 핫픽스/패치를 설치/재설치할 필요가 없습니다.다음은 여러분이 해야 할 일입니다.

ASP를 엽니다.Wordpad / 메모장에서 프로젝트 파일(.csproj)을 net하고 다음과 유사한 줄을 찾습니다.

<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" />

오래된 질문에서 이것을 깨달았지만, 최근에 우연히 그것을 발견했고, 어떻게 그것을 해결했는지에 대해 말씀드리겠습니다.

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

csproj 파일에 VS v10.0에 대한 참조가 있지만 VS 13을 실행하고 있습니다. VS 13은 정말 "v12.0"입니다.

그래서 저는 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)' != ''" />

이제 파일 시스템에 게시할 수 있습니다!

저도 비슷한 문제가 있었고 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일입니다.

Visual Studio 2013(및 2015)에서도 같은 문제로 어려움을 겪고 있습니다.

제게 결정적인 해결책은 다음을 추가하는 것이었습니다.VSToolsPath프로젝트 파일에서 누락된 속성 설정입니다.

을 것을에추니다에 했습니다.<PropertyGroup>지시:

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

참고로 다음과 같습니다. 제 파일은 내프젝파또일한 v10.0 의 v10.Microsoft.WebApplication.targets파일, 하지만 괜찮아 보입니다.

저도 같은 문제가 있었습니다.는 이 프로젝트를 프를니다습만들었트나는로에서 .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" />

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

매력적으로 작동했습니다.

저도 같은 오류가 있었습니다.어찌된 일인지 이 줄이 빠졌습니다.

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

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

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

지금은 잘 작동합니다.

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" />

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

13.0달러(MS 빌드 확장 경로32)\Microsoft\VisualStudio\v$(VisualStudioVersion) 저장 및 다시 로드 프로젝트입니다.

이건 정말 저한테 효과가 있어요, 고마워요.

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>

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

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" />

이 문제는 제 쪽에서 재현할 수 없기 때문에, SDK를 다시 설치해 보는 것을 제안합니다.

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

안부 전합니다,

밍 쉬.

제가 수정한 것과 같은 문제입니다.솔루션에 일부 파일이 누락되었는지 확인하십시오.만약 당신이 과 같은 실수에 직면한다면,Error - The target "GatherAllFilesToPublish" does not exist in the project.그러면 .proj 파일을 열고 이 줄을 삭제하면 됩니다.<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

실제 오류가 발생하거나 누락된 파일이 솔루션에 포함됩니다.

언급URL : https://stackoverflow.com/questions/10989051/why-do-i-get-the-error-the-target-gatherallfilestopublish-does-not-exist

반응형