Visual Studio 2017을 사용하고 있으며 여러 웹 프로젝트 및 Webjob 프로젝트가있는 솔루션이 있습니다.웹 패키지를 게시 할 때 로컬로 디버깅하는 동안 webjob 파일을 포함하려면 어떻게합니까?
내가 원하는 일부 파일이 내가 원하는 개발 환경에서 로컬로 실행하면을 포함 웹 출판 패키지의 일부로 배포되는을 제외 할 수 있습니다. connectionstrings.config 파일을 만들 때하는 것은 내 bin\
에 복사되는 것을 의미 -
<ItemGroup>
<ExcludeFromPackageFiles Include="connectionstrings.config">
<FromTarget>Project</FromTarget>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</ExcludeFromPackageFiles>
</ItemGroup>
이 내 웹 프로젝트에 대해 완벽하게 작동 : 나는 여기에 다른 http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx 및 설명 된 프로세스를 사용하려고 시도하고있어
디렉토리이며 웹 배포 패키지의 일부로 포함되지 않습니다. 반면 내 웹 프로젝트에서 구현하면 파일은 내 bin\
디렉토리로 복사되지만 배포 패키지에도 포함됩니다. 에서
복사 파일을 다음 내가 볼 msbuild를 출력에서
: connectionstrings \에 "빈 \ ProdBuildCfg"C \ 사용자 나에게 프로젝트 \ MyApp를 \ MyApp를 \ webjob1 \ connectionstrings.config \ \ 문서 \ ". config "를 입력하십시오. 그것은 또한 나를 로컬/디버그를 실행할 수 있습니다, 그리고 있기 때문에 내가 원하는 것입니다
:
복사 C : \ 사용자 나에게 빈 \ \ 프로젝트 \ MyApp를 \ MyApp를 \ webjob1 \ \ 문서 \ ProdBuildCfg \ connectionstrings.config를 obj \ ProdBuildCfg \ Package \ PackageTmp \ app_data \ jobs \ continuous \ webjob1 \ connectionstrings.config로 변경하십시오.
이는 문제를 보여줍니다. connectionstrings.config는 이후의 게시/배포를 위해 여전히 패키지 디렉토리에 복사됩니다.
위의 문서 및 다른 사람에서 설명하는 과정은 웹 프로젝트에 적용하고, 그들은 당신이 프로젝트 파일의
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
라인 아래 <ItemGroup>
을 배치해야 나타냅니다. Webjob 프로젝트는 그 라인을 포함 아니라 닮은 뭔가를하지 않습니다
<Import Project="..\packages\Microsoft.Web.WebJobs.Publish.1.0.13\tools\webjobs.targets" Condition="Exists('..\packages\Microsoft.Web.WebJobs.Publish.1.0.13\tools\webjobs.targets')" />
나는 문제가 목표에 관한 생각 - 하나 내 프로젝트의 적절한 <Import Project="...*.targets')" />
라인을 포함하지 않는 파일이나 난에 아니에요 파일의 올바른 위치.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<ExcludeFilesFromDeployment>connectionstrings.config</ExcludeFilesFromDeployment>
</PropertyGroup>
내가 connectionstrings.config의 빌드 작업이 None
로 설정 Copy to output directory
세트 Always
에 (나의 이해는 결과를 해당 작업입니다있는 Copy to output directory
설정이 명확하다에서 :
다음 나는 방법은 여기 How do I include webjob files while debugging locally but exclude when publishing a web package? 언급 시도 패키징/배포와 관련된 작업과는 다릅니다). 같은 결과. (필자는 빌드 구성을 위해 <PropertyGroup>
을 올바르게 사용하도록했습니다.
참고 : 디버깅하는 동안 나는 "하늘빛 webjob로 게시"VS에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 선택하거나 배포 또는 내가 webjob 파일을 포함하려면 어떻게 msbuild myproj.csproj /p:DeployOnBuild=true /p:Configuration=Release /p:PublishProfile="Prod" /p:VisualStudioVersion=15.0 /p:Password=
불행히도 그 설정은 파일을 출력 디렉토리에 복사하지 못하게하여 로컬에서 실행하거나 디버깅 할 수 없음을 의미합니다. 개발 환경에서 로컬로 실행할 때 웹 게시 패키지의 일부로 배포하지 않으려는 파일이 있습니다. – Howiecamp
@Howiecamp, 답장을 보내 주셔서 감사합니다. Webjob 프로젝트에서 'ExcludeFromPackageFiles'의 속성이 작동하지 않는 것 같습니다. 이 문제를 해결하기 위해 해결 방법을 제공 했으므로 업데이트 된 답변을 통해 자세한 정보를 확인할 수 있습니다. 희망이 도움이됩니다. –
당신이 제안하고있는''접근 방식을 시도 할 것입니다. 'msbuild.exe' 명령 줄 (예를 들어 내 질문 참조)을 통해 게시하거나 VS에서 마우스 오른쪽 버튼을 클릭하고 "Azure webjob으로 게시"를 선택하여 대화 형으로 게시할지 여부는 동일하게 작동합니까? –
Howiecamp