sourcetip

Visual Studio 2012 웹 게시에서 파일을 복사하지 않음

fileupload 2023. 5. 8. 22:24
반응형

Visual Studio 2012 웹 게시에서 파일을 복사하지 않음

VS 2012에 웹 애플리케이션 프로젝트가 있는데 웹 게시 도구를 사용하면 성공적으로 빌드되지만 게시 대상(이 경우 파일 시스템)에 파일을 복사하지 않습니다.

빌드 출력을 보면 모든 것이 obj\Release\Package\로 복사되는 것을 볼 수 있습니다.PackageTmp\가 올바르게 표시되지만 빌드 출력에 표시되는 것은 다음과 같습니다.

프로젝트 "{Project}.csproj" 빌드를 완료했습니다.
기존 파일 삭제 중...
폴더를 게시하는 중 /...
: 0개, ==================== 파일 : 3개, 0개, 1개, 0개 ==========
100========== 검색: 1 검색, 0 검색, 0 검색 ==========

게시에 성공했다고 표시되지만 게시 대상 디렉터리에 게시할 파일이 없습니다.

저는 여러 프로젝트에서 이 문제를 보았는데 가끔 솔루션/플랫폼 구성이 이 문제를 일으키는 것처럼 보이지만 정확한 원인을 파악하지 못했습니다.

이런 일이 발생하는 것을 본 사람이나 이를 올바르게 작동하는 방법에 대해 알고 있는 사람이 있습니까?

업데이트:

이 문제에 대한 해결책을 찾은 것 같습니다.저는 이런 일이 또 발생해서 출판 설정을 엉망으로 만들고 있었습니다.설정 탭에서 선택한 구성을 다른 구성으로 변경한 후 모든 파일을 사용하려는 구성으로 되돌리면 다시 게시가 시작됩니다.이것이 앞으로 다른 프로젝트에도 효과가 있기를 바랍니다.

업데이트 2:

Microsoft Connect에 버그를 게시하고 VS Web Developer 팀의 개발자로부터 답변을 들었습니다.그는 그들이 내부 빌드에서 이 문제를 해결했으며 이 문제를 해결할 게시 도구의 업데이트를 곧 릴리스할 것이라고 말했습니다.

업데이트 3:

이 문제는 최근 Visual Studio 2012 업데이트 2에서 해결되었습니다.

같은 문제입니다.이 문제를 해결하기 위해 게시 설정을 릴리스에서 디버그로 변경했습니다.다시 게시한 다음 릴리스로 다시 변경...

이는 2012년 대 2012년의 RC로 작성된 솔루션/프로젝트에 의해 발생할 수 있습니다.이 문제는 몇 달 전에 발생했으며 솔루션 빌드 구성이 프로젝트 구성과 일치하는지 확인하여 문제를 해결했습니다.

2012년에 처음 생성된 동일한 솔루션을 열었을 때 최근에 동일한 문제가 발생했습니다.웹용 VS2012 Express가 포함된 RC.저는 원래 포스터가 제안한 대로 했고 그것이 제 문제를 해결했습니다.

여기 제가 답을 찾을 수 있는 실마리가 있습니다.

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

저에게 도움이 된 위의 대화에서 적절한 응답은 다음과 같습니다.

Microsoft가 2012년 6월 13일 오후 12시에 게시한 안녕 Andrew,

이는 솔루션 구성과 프로젝트 구성을 처리하는 방식의 버그였습니다.동일하다고 잘못 가정했기 때문에(예: Solution's Release|x86에서도 각 프로젝트가 Release|x86으로 설정됨) 파일 게시에 잘못된 빌드 속성을 사용하게 되었습니다.

해결 방법은 솔루션 구성과 빌드 구성을 일치시키는 것입니다.이 문제는 Visual Studio 2012의 다음 릴리스에서 해결될 예정입니다.

감사합니다. - Jimmy Lewis SDET, 비주얼 웹 개발자 팀

이것을 조금 더 진전시키기 위해서입니다.게시 프로필을 만들 때 생성되는 두 개의 파일이 있습니다.

  • NewProfile.pubxml
  • NewProfile.pubxml.user

PublishProfile 파일만 됩니다..pubxml파일로 작성하고 파일로 작성하지 않음.publxml.user합니다..publxml.user프로젝트를 열 때 파일을 즉시 저장할 수 있습니다.새로운 데이터를 생성할 때.publxml.user 다음과같이 됩니다.

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

새 프로필을 만들면 다음과 같은 xml이 생성됩니다.

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>

만약 당신이 그것을 가져간다면.<PropertyGroup>노드하고 그것을 에 넣습니다..pubxml.user파일을 작성하면 게시 프로필이 다시 작동하기 시작합니다.

쉬운 해결 방법은 게시 프로필을 삭제하고 새 프로필을 만드는 것입니다.

솔루션을 마우스 오른쪽 단추로 클릭하고 게시를 선택하면 프로파일이 설정됩니다. 프로파일을 삭제하고 새 프로파일을 만듭니다.

이것으로 해결할 수 있습니다.

2010년에서 2012년으로 전환할 때 이 문제가 있었습니다.

저도 같은 오류가 있었고 설정을 릴리스에서 디버그로 변경했더니 문제가 해결되었습니다.

저도 같은 문제가 있었지만, 이 스레드의 어떤 대답도 저에게 맞지 않았습니다.제 문제는 동적으로 생성된 정적 HTML 파일이 포함된 디렉터리가 있다는 것입니다.전체 디렉터리가 게시되지 않았습니다.

저에게 효과적인 솔루션은 다음과 같습니다.

얼마 전에 받은 문제 중 하나는 프로젝트를 게시할 때 특정 파일 형식이 업로드되지 않았다는 것입니다.

문제의 파일 형식은 .pdf 파일과 .rtf였습니다.

이러한 파일 확장명이 Visual Studio에서 게시를 요구하는 것으로 인식되지 않았기 때문입니다.다행히 Visual Studio에서 변경할 수 있습니다.

복사하지 않을 파일을 선택합니다.특성에서 빌드 액션이 내용으로 설정되어 있는지 확인합니다.

이 방법이 작동하지 않으면 다음을 시도할 수 있습니다.

Project 메뉴에서 Package/Publish Web(웹 패키지/게시)을 선택하고 다음 드롭다운을 확인합니다.

여기에 이미지 설명 입력

이 항목을 이 프로젝트 폴더의 모든 파일로 변경해 보십시오.

이는 .pubxml.user에 게시에 필요한 정보가 포함되어 있고 해당 파일이 소스 제어에 포함되어 있지 않기 때문입니다.이 VS 버그를 해결하려면 .pubxml.user 파일의 정보를 .pubxml 파일로 복사합니다.관련 속성은 다음과 같습니다.

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

그것들을 당신의 .pubxml에 넣으면 당신은 갈 수 있을 것입니다.

저는 이 모든 해결책을 시도해 보았지만, 이것은 매번 작동하는 해결책입니다.

"Publish method:"를 "File System"에서 예를 들어 "Web Deploy"로 변경하고 즉시 "File System"으로 다시 변경합니다.

저는 여러 프로젝트에서 같은 문제를 겪었습니다.유일하게 히트친 것은 웹 프로젝트인 것 같습니다.프로필을 삭제하고 다시 만들면 문제가 한 번만 해결됩니다.또한 생성된 publishxml을 비교해도 차이가 없으므로 프로파일과 전혀 관련이 없는 것 같습니다.

빌드 문제를 앞뒤로 변경하기 위해 OP가 언급한 해결책은 현재로서는 유일하게 신뢰할 수 있는 솔루션으로 보입니다.

VS 2010에서 게시 출력, 이벤트 로그, 시각적 스튜디오 로그 등을 확인한 후 동일한 문제가 발생했습니다. 그런 다음 최근에 v1.0.30810.0으로 업데이트된 웹 게시(추가/제거를 통해)를 제거하기로 결정했습니다.이것으로 문제가 해결되었습니다.

여기서 우리는 같은 문제를 겪었습니다.

"Publish method:"를 "File System"에서 예를 들어 "Web Deploy"로 변경하고 즉시 "File System"으로 다시 변경합니다.

다음은 저에게 효과가 있었습니다.

Release > Debug > Release(또는 그 반대)에서 변경한 후 게시합니다.

필요 없는 항목을 삭제, 편집, 게시할 필요가 없습니다.

제 문제는 제 project.csproj 파일의 잘못된 구성에 있었습니다.'_address-step1-cisco.cshtml' 파일이 게시 시 복사되지 않았습니다.'없음'이 '내용'으로 바뀌었습니다. 이제 괜찮습니다.여기에 이미지 설명 입력

VS 2012 Pro에서도 디스크 게시 대상과 동일한 문제가 발생했습니다.프로젝트가 올바르게 게시되었지만 대상 폴더에 파일을 복사하지 못한 경우 이 문제를 수행하기 시작했습니다.

솔루션은 게시 프로파일을 편집하고, 릴리스(모든 CPU)에서 디버깅으로 모드를 변경한 다음 다시 릴리스(모든 CPU)로 변경하는 것이었습니다.이렇게 하면 PublishProfiles\projname.pubxml.user 파일이 위에서 설명한 대로 다시 작성됩니다.속성 그룹 노드 아래에 Last Used Build, Last Used Platform 및 TimeStampOf AssociatedLegacyPublishXmlFile 요소를 추가한 것 같습니다.게시가 완료되면 개별 파일 및 게시 시간이 포함된 다른 항목 그룹을 추가합니다.

저는 결국 Web Deploy를 사용하여 원하는 작업(배포 가능한 파일 복사 및 기타 작업)을 수행하는 것을 포기하고 PowerShell에서 스크립트를 작성했으며 결과에 만족합니다.MSBuild/Web Publish를 통해 시도한 것보다 훨씬 빠릅니다. 아마도 이러한 방법은 여전히 필요하지 않은 작업을 수행하고 있었기 때문일 것입니다.

요점은 다음과 같습니다.

function copy-deployable-web-files($proj_path, $deploy_dir) {
  # copy files where Build Action = "Content" 
  $proj_dir = split-path -parent $proj_path
  [xml]$xml = get-content $proj_path
  $xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
    $from = "$proj_dir\$_"
    $to = split-path -parent "$deploy_dir\$_"
    if (!(test-path $to)) { md $to }
    cp $from $to
  }

  # copy everything in bin
  cp "$proj_dir\bin" $deploy_dir -recurse
}

CI 환경(TeamCity)에서 이를 부르지만 빌드 후 이벤트에도 쉽게 연결될 수 있습니다.

이 작업은 성공적이었습니다.

"속성"에서 게시 프로필 제거게시 프로파일>xxxxx.pubxml"을(를) 다시 설정합니다.

저는 obj/[release|stage|]에서 대상 위치를 변경함으로써 이 문제를 해결할 수 있다는 것을 알았습니다.솔루션 폴더 외부의 새 경로로 이동합니다(예:\deploy).VS 2012는 출판 과정에서 혼란스럽고 어딘가에서 포기하는 것처럼 보입니다.

최근 VS 2013에서 Umbraco CMS를 가져온 MVC 프로젝트에서 동일한 문제가 발생했습니다. 게시할 수 없었습니다.위의 답변은 도움이 되었지만 VS에서 실제로 무엇을 해야 하는지 파악하는 데 시간이 필요했습니다.그것을 알아내기 위해서는 MS 블로그에 대한 몇 가지 조사가 필요했습니다.간단하게 말하려고 노력합니다.

  • VS 도구 모음에서 특정 구성(예:CPU를 해제하고 프로젝트를 실행합니다.
  • 문제의 솔루션에서 솔루션 탐색기를 마우스 오른쪽 버튼으로 클릭한 후 게시를 선택합니다.새 게시 프로파일을 생성하거나 지정된 프로파일을 사용하지만, 마지막으로 프로젝트를 실행하기 전에 항상 동일한 구성(예: 릴리스 및 CPU)이 설정에서 선택되어 있는지 확인합니다.
  • 또한 저의 경우 VS를 다시 시작하고 모든 게시 프로필을 삭제했지만 여기서 마지막으로 게시하지 못한 시도의 설정이 고착되었기 때문에 OBJ 폴더를 삭제해야 했습니다.

솔루션의 다른 참조 프로젝트가 포함된 웹 응용 프로그램이 있습니다.이전에도 여러 번 단일 게시 구성을 사용하여 성공적으로 배포했습니다.과거에 누락되었던 프로젝트에 대한 프로젝트 구성을 디버그에서 릴리스로 변경했습니다.다음 번에 배포를 시도했을 때 다음과 같은 증상이 나타났는데, 게시가 조용히 실패했습니다. 아무 것도 하지 않고 성공했다고 말합니다.

1>------ Build started: Project: Project, Configuration: DeployProduction Any CPU ------
1>  
2>Publishing folder /...
========== Build: 1 succeeded, 0 failed, 9 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

이를 복구하는 유일한 방법은 게시 프로필을 지우고 Visual Studio를 닫아 삭제 내용을 저장한 후 다시 열고 처음부터 게시 프로필을 다시 만드는 것이었습니다.그렇게 하면 다시 게시할 수 있습니다.

Win8 VS 2012, 형편없는 노트북.

Visual Studio 2012에서는 릴리스 간 전환으로 인해 여전히 문제가 발생합니다.

▁to를 삭제하기 위해 사전 빌드 했습니다.obj 폴더:del /s /f /q $(ProjectDir)\obj그리고 출판 문제를 해결했습니다.청소는 때때로 효과가 있지만 항상 효과가 있는 것은 아닙니다.

저는 마침내 혼자서 답을 찾았습니다.위의 모든 해결책은 저에게 효과가 없습니다.

제가 한 일은 프로젝트를 이동시켜 프로젝트 폴더를 더 짧은 것으로 변경하고 게시를 시작하는 것입니다.

그것이 제 쪽에서 실패한 이유는 제가 매우 긴 프로젝트 이름/데이터베이스를 가지고 있었기 때문입니다.

C:\Users\사용자\데스크탑\준수 관리 시스템\준수 문제 관리 시스템\준수 문제 관리 시스템

rar 파일을 추출할 때 이름/경로가 너무 길다고 표시되는 경우가 있기 때문에 이 점을 생각을 했습니다.2012년 비주얼 스튜디오 퍼블리싱과 똑같을 줄 알았는데, 맞아요!

그게 여러분에게 도움이 되기를 바랍니다.

현재 프로젝트에서 클래스 이름이 같고 페이지 이름이 다른 백카피를 만들었는지 확인합니다(클래스 이름이 복사된 파일을 상속함).궁극적으로 그것은 컴파일러를 혼란스럽게 할 것입니다!!!

CodeFile="Consolidated.aspx.vb" 상속="Consolidated"

위의 어떤 해결책도 저에게 효과가 없었습니다.

하지만 저는 우리의 5개 ASP에 주목했습니다.NET MVC 프로젝트는 기본 솔루션에 포함되어 있으며, 이 중 4개는 배포 패키지를 올바른 위치에 배치했으며, 1개는 obj\Debug 아래에 배치했습니다.

프로젝트를 비교해보니 불일치가 있었습니다.솔루션은 이를 변경하는 것이었습니다.

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

대상:

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

이를 변경한 후 5개 프로젝트 모두 배포 패키지를 올바른 위치에 배치했습니다.

(줄이 길어서 미안하지만, 더 좋은 축약 방법을 찾을 수 없었습니다.)

Visual Studio에서 생성한 서비스 참조 파일이 전체 경로 길이 측면에서 너무 길어지는 문제가 발생했습니다.

svcutil을 사용하여 서비스 참조를 다시 생성하여 단축했습니다.exe. 원래 서비스 참조 파일을 모두 삭제합니다.

svcutil은 다음과 같이 부를 수 있습니다.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe" /language:CS http://myservice /namespace:*,My.Namespace

컴파일 오류를 방지하려면 My.Namespace를 생성된 서비스 프록시(일반적으로 Reference.cs 파일에 있음)의 기존 네임스페이스로 바꿔야 합니다.

http://myservice서비스 끝점 URL로 대체해야 합니다.

저도 같은 문제에 휘말렸어요.위의 어떤 해결책도 저에게 효과가 없었습니다.

그래서, 저는 게시하는 동안 복사하지 못한 파일은 제외했습니다.

저는 그 웹사이트를 여러 번 게시했습니다.그런데 어느 날 제가 aspx 파일을 수정하고 웹사이트를 게시하려고 했을 때 게시된 폴더가 비어 있었습니다.

해결책을 찾다가 해결책을 찾았습니다.

  1. 게시 마법사는 게시하는 동안 오류를 반영하지만 대상 폴더에 파일을 복사하지는 않습니다.

  2. 오류가 발생하는 파일을 찾으려면 웹 사이트 폴더 내용을 새 폴더에 복사하고 해당 웹 사이트로 비주얼 스튜디오를 시작합니다.

  3. 이제 게시를 시도하면 오류가 포함된 파일 이름이 제공됩니다.

  4. 원본 웹 사이트 폴더의 오류를 수정하고 게시를 시도하기만 하면 이전과 같이 작동합니다.

다음 단계에 따라 해결합니다.

Build > Publish > Profile > New

새 프로파일을 만들고 기존 프로파일과 동일한 설정으로 구성합니다.

이제 프로젝트가 올바르게 게시됩니다.이 문제는 최신 버전의 Visual Studio에서 생성된 다른 시스템의 소스 제어 게시 프로필로 인해 종종 발생합니다.

고정 - 제공된 다양한 솔루션이 저에게 효과가 없었습니다.VS Community 2017에서 Windows Server 2012 R2는 사용자의 TEMP 및 TMP 환경 변수를 변경한 다음 시스템을 다시 시작하고 다시 구축하는 데 도움이 되었습니다(VS를 다시 시작하는 것만으로는 충분하지 않았습니다).이러한 임시 변수는 VS가 임시를 게시하는 위치입니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

임시 변수를 변경한 후 비주얼 스튜디오를 다시 시작하는 것은 효과가 없었고, 시스템을 다시 부팅해야 했습니다.

Visual Studio를 종료하고 Pubxml.user 파일을 Pubxml 디렉토리에서 삭제한 후 VS를 다시 시작하여 게시합니다.VS 2019에서 작업했습니다.

첫 번째:

  • 기본 제공 릴리스 구성.
  • 프로젝트 속성 -> 페이지에서 패키지/웹 게시 아래의 모든 파일 및 폴더를 선택합니다.
  • 솔루션을 재구성합니다(솔루션 치료 후).
  • 지금 출판합니다.

게시하는 동안 선택한 항목을 다시 확인합니다.
이렇게 하면 됩니다.나한테 딱 맞았어요!:)

언급URL : https://stackoverflow.com/questions/12201146/visual-studio-2012-web-publish-doesnt-copy-files

반응형