Programing

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

lottogame 2020. 4. 17. 08:10
반응형

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


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

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

4> 프로젝트 "{Project} .csproj"를 작성했습니다.
4> 기존 파일 삭제 ...
4> 게시 폴더 / ...
4> ========== 빌드 : 3 성공, 0 실패, 1 최신, 0 생략 ===== =====
========== 게시 : 1 성공, 0 실패, 0 건너 뛰기 ==========

공개에 성공했다고하더라도 공개 대상 디렉토리에 파일이 없습니다.

여러 프로젝트에서 이것을 보았고 때로는 솔루션 / 플랫폼 구성으로 인해이 문제가 발생하는 것처럼 보이지만 정확한 원인을 찾아 낼 수 없었습니다.

다른 사람이 이런 일이 발생했거나 올바르게 작동하는 방법에 대한 아이디어가 있습니까?

최신 정보:

이에 대한 해결 방법을 찾았을 것입니다. 방금이 문제가 다시 발생했으며 게시 설정이 엉망이었습니다. 설정 탭에서 선택한 구성을 다른 구성으로 변경 한 다음 다시 구성으로 변경하면 모든 파일을 다시 사용하기를 원했습니다. 바라건대 이것은 앞으로 다른 프로젝트에서 작동하기를 바랍니다.

업데이트 2 :

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

업데이트 3 :

이것은 최근 Visual Studio 2012 업데이트 2에서 수정되었습니다.


이는 RC vsvs2012로 작성된 솔루션 / 프로젝트로 인해 발생할 수 있습니다. 이것은 몇 달 전에 일어 났으며 솔루션 빌드 구성이 프로젝트 구성과 일치하도록하여 문제를 해결했습니다 ...

VS2012 Express for Web을 사용하여 vs2012RC에서 처음 만든 동일한 솔루션을 열 때 최근에 동일한 문제가 발생했습니다. 나는 원래 포스터가 제안한 것을 정확하게 수행했고 내 문제를 해결했다.

다음은 답변으로 연결되는 스레드입니다.

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

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

Microsoft가 2012 년 6 월 13 일 12:00 PM에 게시 함 안녕 Andrew,

이것은 솔루션 구성과 프로젝트 구성을 처리하는 방식에있어 버그였습니다. 우리는 그것들이 동일하다고 가정했습니다 (예를 들어 솔루션의 Release | x86은 각 프로젝트를 Release | x86로 설정했을 것입니다). 그러면 파일을 게시하기 위해 잘못된 빌드 속성을 사용하게되었습니다.

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

감사합니다-Visual Web Developer 팀 Jimmy Lewis SDET


같은 문제입니다. 해결 방법은 게시 설정을 릴리스에서 디버그로 변경하는 것입니다. 다시 게시 한 다음 다시 릴리스로 변경하십시오.


이것을 조금 더 가져 가려면. 공개 프로파일을 작성할 때 작성되는 두 개의 파일이 있습니다.

  • NewProfile.pubxml
  • NewProfile.pubxml.user

소스 제어의 PublishProfile 폴더에 이러한 파일이있는 프로젝트를 열면 .pubxml파일이 아닌 파일 .publxml.user있으므로 .publxml.user프로젝트를 열 때 파일이 즉시 작성됩니다. 그것이 .publxml.user즉시 새 것을 만들면 xml은 다음과 같습니다.

<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파일에 넣으면 PublishProfiles가 다시 작동하기 시작합니다.


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

솔루션을 마우스 오른쪽 단추로 클릭하고 공개를 선택하면 프로파일 세트가 있습니다. 이것을 삭제하고 새로 만드십시오.

이 문제를 해결합니다.

2010에서 2012로 전환하는 데이 문제가있었습니다.


동일한 오류가 발생하여 설정을 릴리스에서 디버그로 변경 하면 문제가 해결되었습니다.


나는이 같은 문제가 있었지만이 스레드의 대답 중 어느 것도 나를 위해 일하지 않았다. 내 문제는 동적으로 생성 된 (내 응용 프로그램에 의해) 정적 HTML 파일이 들어있는 디렉토리가 있다는 것입니다. 전체 디렉토리가 공개되지 않았습니다.

나를 위해 일한 해결책은 여기 에서 발견 되었습니다 .

한 가지 문제가있어 문서를 작성해야한다고 생각한 이유는 프로젝트를 게시 할 때 특정 파일 형식이 업로드되지 않았다는 것입니다.

해당 파일 형식은 .pdf 파일과 .rtf입니다.

이러한 파일 확장자는 Visual Studio에서 게시해야하는 것으로 인식되지 않았기 때문입니다. 운 좋게 이것은 Visual Studio에서 변경할 수 있습니다.

복사하지 않는 파일을 선택하십시오. 등록 이 확인 작업은 빌드 로 설정되어 콘텐츠 .

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

언더 프로젝트 메뉴 선택 / 패키지를 게시 웹 및이 드롭 다운주의 사항 :

여기에 이미지 설명을 입력하십시오

이 프로젝트 폴더의 모든 파일로 변경하십시오.


.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에서 동일한 문제가 발생했습니다. 게시 출력, 이벤트 로그를 확인하고 Visual Studio 로그를 켜고 확인한 후 최근에 v1로 업데이트되었다고 생각되는 추가 / 제거를 통해 웹 게시를 제거하기로 결정했습니다. 0.30810.0. 문제가 해결되었습니다.


여기에도 같은 문제가있었습니다.

"Publish method :"를 "File System"에서 "Web Deploy"로 변경 한 다음 즉시 "File System"으로 다시 변경하면됩니다.


다음은 나를 위해 일했습니다.

Release> Debug> Release (또는 그 반대)에서 변경 한 다음 게시하면됩니다.

불필요한 것을 삭제, 편집, 출판 할 필요가 없습니다.


내 문제는 myproject.csproj 파일을 잘못 구성했습니다. '_address-step1-stored.cshtml'파일이 게시시 복사되지 않았습니다. '없음'이 '콘텐츠'로 변경되었습니다. 이제 괜찮습니다.여기에 이미지 설명을 입력하십시오


디스크 게시 대상이있는 VS 2012 Pro와 동일한 문제입니다. 프로젝트가 올바르게 게시하는 데 사용되었지만 파일을 대상 폴더로 복사하지 못한 경우이 문제가 발생하기 시작했습니다.

해결책은 게시 프로파일을 편집하고 모드를 릴리스 (Any CPU)에서 디버그로 변경 한 다음 릴리스 (Any CPU)로 다시 변경하는 것입니다. 이렇게하면 PublishProfiles \ projname.pubxml.user 파일이 다시 작성됩니다 (위 설명 참조). 속성 그룹 노드 아래에 LastUsedBuild, LastUsedPlatform 및 TimeStampOfAssociatedLegacyPublishXmlFile 요소를 추가 한 것 같습니다. 게시가 완료되면 개별 파일과 게시 시간이있는 다른 ItemGroup이 추가됩니다.


이 행동은 나에게 성공했다 :

"속성> PublishProfiles> xxxx.pubxml"에서 게시 프로파일을 종료하고 다시 설정하십시오.


가치있는 결과를 위해 결국 Web Deploy와의 싸움에서 포기하여 원하는 파일 (배포 가능 파일 복사 등)을 수행하므로 PowerShell에서 스크립트를 작성하여 결과에 만족합니다. 그것은이다 훨씬 MSBuild를 / 웹 그 방법이 여전히 필요하지 않은 일을했다 아마도 때문에, 게시를 통해 내가 노력 무엇보다 더 빨리.

여기서 요점은 (의 문자 ) :

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)에서 이것을 호출하고 있지만 빌드 후 이벤트에도 쉽게 연결할 수 있습니다.


대상 위치를 obj / [release | stage | ..]에서 솔루션 폴더 외부의 새 경로 (예 : c : \ deployment)로 변경 하여이 문제를 해결할 수 있음을 알았습니다. VS 2012가 혼란스러워 게시 프로세스 중 어딘가에서 포기한 것처럼 보입니다.

매트


VS 2013에서 최근 Umbraco CMS를 가져온 MVC 프로젝트와 동일한 문제가있었습니다. 게시 할 수 없습니다. 위의 대답은 도움이되었지만 VS에서 실제로해야 할 일을 알아내는 데 시간이 필요했습니다. 예를 들어 MS 블로그에 대한 조사가 필요했습니다. 나는 간단하게 말하려고합니다.

  • VS 도구 모음에서 Release 및 Any 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 VS2012, 엉터리 노트북.


Visual Studio 2012에서 릴리스간에 전환하면 여전히 문제가 발생합니다.

obj폴더 를 삭제하기 위해 빌드 전 이벤트를 추가했으며 del /s /f /q $(ProjectDir)\obj게시 문제가 해결되었습니다. 청소는 때때로 작동하지만 항상 그런 것은 아닙니다.


나는 마침내 스스로 답을 찾았다. 위의 모든 솔루션이 저에게 효과적이지 않습니다.

내가 한 일은 프로젝트를 c 드라이브로 이동하여 프로젝트 폴더를 더 짧은 것으로 변경하고 게시하는 것을 좋아한다는 것입니다.

그것이 내 편에서 실패한 이유는 내가 매우 긴 프로젝트 이름 / 별명을 가지고 있기 때문입니다.

C : \ Users \ user \ Desktop \ Compliance Management System \ ComplianceIssueManagementSystem \ ComplianceIssueManagementSystem

나는 때때로 rar 파일을 추출 할 때 이름 / 경로가 너무 길다고 말했기 때문에 이것을 생각했습니다. Visual Studio 2012 게시와 동일하다고 생각했습니다. 그리고 그렇습니다!

그것이 당신에게 도움이되기를 바랍니다.


현재 프로젝트에서 동일한 클래스 이름과 다른 페이지 이름으로 복사했는지 여부를 확인하십시오 (클래스 이름은 복사 된 파일을 상속 함). 궁극적으로 컴파일러를 혼동시킬 것입니다 !!!

CodeFile = "Consolidated.aspx.vb"상속 = "연결됨


위의 해결책 중 어느 것도 나를 위해 일하지 않았습니다.

그러나 주요 솔루션에 포함 된 5 개의 ASP.NET MVC 프로젝트 중 4 개는 배포 패키지를 올바른 위치에 배치하고 나머지 하나는 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. 오류를 생성하는 파일을 찾으려면 웹 사이트 폴더 내용을 새 폴더에 복사하고 해당 웹 사이트로 Visual Studio를 시작하십시오.

  3. 이제 게시하려고하면 오류가 포함 된 파일 이름이 표시됩니다.

  4. 원래 웹 사이트 폴더의 오류를 수정하고 게시하려고하면 이전과 동일하게 작동합니다.


다음 단계를 수행하여 해결하십시오.

Build > Publish > Profile > New

새 프로파일을 작성하고 기존 프로파일과 동일한 설정으로 구성하십시오.

프로젝트가 이제 올바르게 게시됩니다. 이것은 종종 최신 버전의 Visual Studio에서 생성 된 다른 컴퓨터의 소스 제어 게시 프로필의 결과로 발생합니다.


먼저:

  • 릴리스 구성으로 빌드하십시오.
  • 프로젝트 속성-> 페이지의 패키지 / 게시 웹 아래에서 모든 파일 및 폴더를 선택하십시오.
  • 용액을 재 구축합니다 (청소 용액 후).
  • 이제 게시하십시오.

게시하는 동안 선택한 항목을 다시 확인하십시오.
이 작업을 수행해야합니다. 그것은 나를 위해했다! :)


가장 쉬운 방법은

   1. select the file(s) that are not being copied,
   2. Press <F4> to get the properties window
   3. Make the "Build Action" property "compile" or "content" depending on what it is.
   4. Now this particular file will be included!

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

반응형