asp.net webapi 게시-xml 파일이 복사되지 않음
나는 이것을 기반으로 자동 생성 된 도움말이있는 MVC 4.0 WebApi 프로젝트가 있습니다.
내 모델 클래스는 내 솔루션의 다른 프로젝트에 저장됩니다. 모든 프로젝트에 대해 xml 파일 생성이 활성화됩니다 (프로젝트 속성-> 빌드-> 출력-> XML 문서 파일-활성화 됨).
로컬 디버그에서 모든 것이 정상입니다-xml 파일이 프로젝트 디렉토리에 복사되고 다른 프로젝트의 필드 / 클래스에 대한 주석이 표시됩니다.
하지만 게시 프로필 (폴더로)을 사용할 때 xml 파일이 출력 폴더에 복사되지 않습니다. 기본 WebApi 프로젝트에서 하나의 xml 파일 만 복사됩니다. 그래서 다른 프로젝트의 수업에 대한 댓글이 보이지 않습니다.
저에게도 비슷한 문제가있었습니다. 대답은 "doh!"였습니다. 순간.
프로젝트 설정에서 릴리스가 아닌 디버그 구성에서 XML 문서 파일 만 활성화했습니다. Release와 함께 배포하고 있었으므로 XML 문서가 실제로 생성되지 않았습니다. 따라서 수정은 디버그 및 릴리스 구성 모두에 대해 XML 문서를 활성화하는 것입니다.
두 가지 방법으로 수행 할 수 있습니다.
1) 프로젝트 속성으로 이동-> 빌드 옵션 선택-> "XML 문서 파일"확인-> 경로 "App_data \ XMLDocument.xml"추가-> 설정 저장, 프로젝트 빌드-> XMLDocument 포함. xml 파일-> 속성 선택-> 출력 디렉토리에 복사-> "항상 복사"선택
2) 프로젝트 속성으로 이동-> "패키지 / 웹 게시"옵션 선택-> 표시 할 항목-> 드롭 다운에서 "이 프로젝트의 모든 파일"선택
게시 프로필 .pubxml 파일에서 사용자 지정 MSBuild 대상 만 사용하여이 문제를 해결할 수있었습니다. 아래 단계를 따르십시오. 최종 결과는이 MSBuild 대상이 Web API의 bin 폴더에서 게시중인 bin 폴더로 모든 .xml 파일을 복사하는 것입니다. 이 파일을 App_Data에 복사 할 필요가 없습니다.
1) [프로젝트 폴더] \ Properties \ PublishProfiles에서 적절한 .pubxml 파일을 엽니 다.
2) <Project><PropertyGroup>태그 내에 다음 스 니펫을 추가합니다 .
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
3) <PropertyGroup>태그 뒤에 다음 스 니펫을 추가합니다 .
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="bin\*.xml" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
게시 할 때 프로젝트 디렉토리 외부의 파일을 포함하는 방법을 다루는 이 답변에 대한 크레딧이 있습니다.
webapi 프로젝트의 xml 파일 만 배포되었다는 동일한 문제가 발생했습니다.
이 문제를 해결하기 위해 첫 번째 PropertyGroup요소 내 Web (Api) 프로젝트 파일에 이것을 추가해야했습니다 .
<ExcludeXmlAssemblyFiles>false</ExcludeXmlAssemblyFiles>
그 후 모든 프로젝트 (활성화 된 경우) 의 문서 xml 파일 이 게시 되었습니다 !
한 가지 방법은 프로젝트 내의 " App_Data "폴더에 XML 파일을 추가 한 다음 Visual Studio 내 에서 " Ouput 디렉터리에 복사 "속성에 대한 파일 을 " 항상 "으로 선택하는 것입니다.
이전 답변을 보완하면서 아래 문서와 같이 포함 할 다른 유형의 태그도 있습니다.
https://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/deploying-extra-files
꼬리표:
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
publishprofile (*. pubxml)을 열고 다음 코드를 "Project"요소에 포함합니다.
<ItemGroup>
<Content Include="bin\yourDocumentationFile.xml">
<CopyToOutputDirectory>true</CopyToOutputDirectory>
</Content>
<!-- Include a content to each documentation file -->
</ItemGroup>
사이트에서 게시 프로필을 사용하는 경우 (예 : ISP에서 다운로드 한 경우) 다음 옵션이 False로 설정되어 있는지 확인해야합니다.
<ExcludeApp_Data>False</ExcludeApp_Data>
XML 파일의 속성은 다음과 같이 설정할 수 있습니다. 빌드 작업-내용, 출력 디렉터리에 복사-항상
그러나 게시 프로필에서 위의 매개 변수가 True로 설정되어 있으면 XML 파일이 게시되지 않습니다. 이것을 어려운 방법으로 배웠습니다.
문서 파일을 원하지 않는 경우 HelpPageConfig.cs로 이동하여 주석 처리하십시오.
config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")))
참고 URL : https://stackoverflow.com/questions/23681534/asp-net-webapi-publish-xml-files-not-copy
'Program Club' 카테고리의 다른 글
| C의 printf 형식 문자열에 % c와 % s가 모두있는 이유는 무엇입니까? (0) | 2020.10.30 |
|---|---|
| 자식 양식이 활성 상태 일 때 부모 양식을 비활성화하는 방법은 무엇입니까? (0) | 2020.10.30 |
| pip install Matplotlib 사용 중 메모리 오류 (0) | 2020.10.30 |
| Java에서 파일을 byte [] 배열로 읽는 우아한 방법 (0) | 2020.10.30 |
| 프로그래밍 방식으로 imageview의 높이를 matchparent로 설정 (0) | 2020.10.30 |