[Asp.net] Visual Studio 2012 Web Publish는 파일을 복사하지 않습니다.


Answers

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

Question

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

빌드 출력을 보면 obj \ Release \ Package \ PackageTmp \에 모든 것이 복사 된 것을 볼 수 있지만 빌드 출력에서 ​​볼 수있는 것은 모두 다음과 같습니다.

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

게시가 성공했다는 것을 알려주지 만 게시 대상 디렉토리에는 파일이 없습니다.

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

다른 사람이 이런 일이 발생했는지 또는 제대로 작동하는 방법에 대한 아이디어가 있습니까?

최신 정보:

나는 이것에 대한 해결책을 찾았을 수도 있습니다. 방금 다시 이런 일이 생기고 나는 출판 설정으로 어지럽 혔습니다. 설정 탭에서 선택한 구성을 다른 구성으로 변경 한 다음 모든 파일을 사용하고 싶었던 구성으로 다시 되돌려 놓으면 다시 게시가 시작됩니다. 바라건대 이것은 다른 프로젝트에서 앞으로도 잘 작동 할 것입니다.

업데이트 2 :

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

업데이트 3 :

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




Umbraco CMS를 가져온 MVC 프로젝트에 대해 VS 2013에서 같은 문제가 최근에있었습니다. 나는 출판 할 수 없었다. 위의 대답은 도움이되었지만 실제로 VS에서해야 할 일을 파악하는 데 시간이 필요했습니다. 발견하기 위해 MS 블로그 등 일부 연구가 필요했습니다. 나는 그것을 간단하게 말하려고 노력한다 :

  • 특정 구성 (예 : 릴리스 및 모든 CPU)을 VS 도구 모음에서 선택하십시오. 프로젝트를 실행하십시오.
  • 그런 다음 해당 솔루션에서 솔루션 탐색기를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다. 새로운 게시 프로파일을 만들거나 주어진 프로파일을 사용하십시오. 그러나 설정에서 마지막으로 프로젝트를 실행하기 전에 동일한 구성 (예 : Release 및 Any CPU)이 선택되었는지 항상 확인하십시오.
  • 또한 내 경우 에는 OBJ 폴더 를 삭제해야 합니다. 왜냐하면 여기서 마지막으로 실패한 설정은 게시가 중단되었지만 VS를 다시 시작하고 모든 게시 프로필을 삭제하기 때문입니다.



가치가있는 부분에 대해서는 필자는 Web Deploy와의 싸움에서 포기하고 (배포 가능한 파일 만 복사하는 것 외에는) 원하는대로 할 수 없도록 만들었습니다. 그래서 PowerShell에서 스크립트를 작성 했으므로 정말 만족 스럽습니다. MSBuild / Web Publish를 통해 시도한 것보다 훨씬 빠릅니다. 아마도 이러한 메서드가 필요하지 않은 작업을 수행했기 때문입니다.

여기 요지가 있습니다 ( literally ) :

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




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




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

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




다음은 나를 위해 일했다 :

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

필요하지 않은 것을 삭제, 편집, 게시 할 필요가 없습니다.




먼저:

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

게시하는 동안 내가 선택한 것을 다시 확인하십시오.
이 일을해야합니다. 그것은 나를 위해했다! :)




내 문제는 myproject.csproj 파일의 잘못된 구성에있었습니다. '_address-step1-stored.cshtml'파일이 게시시 복사되지 않았습니다. '없음'이 '콘텐츠'로 변경되었습니다. 이제는 괜찮습니다.




나는이 모든 솔루션을 시도했지만 이것이 매번 작동하는 솔루션입니다.

"게시 방법 :"을 "파일 시스템"에서 "웹 배포"로 변경하고 즉시 파일 시스템으로 다시 변경합니다.




나는이 같은 문제를 가지고 있지만이 스레드의 답 중 아무 것도 나를 위해 일한 적이 없다. 내 문제는 동적으로 생성 된 (내 응용 프로그램에 의해) 정적 HTML 파일을 포함하는 디렉토리가 있다는 것입니다. 전체 디렉토리가 게시되지 않았습니다.

나를 위해 일한 해결책은 here 에서 발견 here .

내가 잠시 생각한 한 가지 문제점은 프로젝트를 게시 할 때 특정 파일 형식이 업로드되지 않았다는 것입니다.

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

그 이유는 이러한 파일 확장명이 Visual Studio에서 게시가 필요하다고 인식되지 않았기 때문입니다. 다행히 Visual Studio에서이 값을 변경할 수 있습니다.

복사되지 않는 파일을 선택하십시오. Properties 에서 Build ActionContent 로 설정되었는지 확인 하십시오 .

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

프로젝트 메뉴에서 패키지 /게시를 선택하고이 드롭 다운을 확인하십시오.

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




현재 프로젝트에서 동일한 클래스 이름과 다른 페이지 이름으로 복사본을 만들었는지 확인하십시오 (클래스 이름은 복사 된 파일을 상속받습니다). 궁극적으로 그것은 컴파일러를 혼란시킬 것이다 !!!

CodeFile = "Consolidated.aspx.vb"Inherits = "Consolidated




나는 웹 사이트를 여러 번 출판했다. 그러나 언젠가 일부 aspx 파일을 수정 한 다음 웹 사이트를 게시하려고 시도했을 때 비어있는 게시 된 폴더가 생성되었습니다.

내 해결 방법에, 나는 해결책을 발견.

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

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

  3. 이제 게시하려고하면 오류가있는 파일 이름이 나타납니다.

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




쉬운 수정 사항은 게시 프로파일을 삭제하고 새로운 프로파일을 작성하는 것입니다.

솔루션에서 마우스 오른쪽 버튼을 클릭하고 게시를 선택하면 프로필이 설정됩니다. 이것을 삭제하고 새로운 것을 생성하십시오.

이 문제가 해결 될 것입니다.

2010 년에서 2012 년으로 전환하면서이 문제가 발생했습니다.




Visual Studio에서 생성 된 Service Reference 파일이 전체 경로 길이 측면에서 너무 길어서이 문제가 발생했습니다.

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로 http://myservice 합니다.