Jenkins 기반 자동화 된 웹 응용 프로그램 빌드/배포 (.NET 4.0)를 수행하려고합니다. 웹 응용 프로그램 프로젝트에는 여러 프로젝트 참조가 있으며이 프로젝트 참조는 타사 DLL을 참조합니다.MSBuild 웹 배포로 두 번째 수준의 이진 참조가 누락되었습니다.
문제 :
- 두 번째 수준의 참조를 (프로젝트 참조의 참조) 배포 패키지를 구축하기위한 사용의
obj\<CONFIGURATION>\Package\PackageTmp\bin
폴더에 bin 폴더에 들어갔습니다되지 않습니다. - Visual Studio에서 빌드하면 두 번째 수준 참조가 일반 빌드 출력 디렉터리로 끌어옵니다.
- MSBuild를 사용하여 빌드 할 때 두 번째 수준 종속성은 일반 출력 디렉터리 나
PackageTmp\bin
디렉터리로 가져 오지 않습니다.
이것은 MS가 Won't-Fix 호 here으로 확인한 것입니다.
관련 질문 here, here 및 here이 내 문제와 일치하지 않거나 작동하지 않는 솔루션을 제공합니다. 모든 답변을 수락 한 것뿐만 아니라 검토했습니다.
이MSBuild를 MySolution.sln/P : 구성 = 통합/P : 플랫폼 = "모든 CPU"/ t : 청소, 빌드/P
내 빌드 명령이 (MSBuild를 4.0을 사용)과 같은 : DeployOnBuild = 참/P : DeployTarget = 패키지 /P : 내가 수동으로 프로젝트 파일의 참조 요소를 수정하려고했습니다
AutoParameterizationWebConfigConnectionStrings = 거짓, 아니 성공, <Private>True</Private>
를 추가.
두 번째 수준의 종속성이 웹 게시 임시 디렉터리에 자동으로 올바르게 전달되도록이 알려진 문제를 해결하려고합니다.
나의 현재 시도는 DLL을 here을 찾기위한 몇 가지의 MSBuild 코드와 결합 된 일반적인 접근 here (A MyProject.wpp.targets 다음 웹 프로젝트 파일에 파일을 추가하여 웹 게시 파이프 라인을 사용자 정의)를 결합합니다. 지금까지는 결과가 생성되지 않았거나 프로젝트 파일이 손상되었습니다. 나는 사용자 정의 MSBuild 코드에 익숙하지 않고 매우 모호하다.
내 질문 : 내 특정 사례에서 작동하는보다 완벽한 예를 찾고 있습니다. I 목표는 패키지 temp 디렉토리에 복사 할 파일을 모으고 두 번째 수준의 종속성을 추가하는 웹 게시 파이프 라인에 개입하는 것입니다.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<BRPathFiles Include="$(SolutionDir)..\Common\**\*.dll;$(SolutionDir)**\*.dll" />
<ConfigPathFiles Include="$(SolutionDir)..\Common\**\*.config;$(SolutionDir)**\*.config" />
</ItemGroup>
<Target Name="CopySecondLevelDependencies" BeforeTargets="CopyAllFilesToSingleFolderForPackage">
<RemoveDuplicates Inputs="@(BRPathFiles->'%(RootDir)%(Directory)')">
<Output TaskParameter="Filtered" ItemName="BRPaths" />
</RemoveDuplicates>
<RemoveDuplicates Inputs="@(ConfigPathFiles->'%(RootDir)%(Directory)')">
<Output TaskParameter="Filtered" ItemName="ConfigPaths" />
</RemoveDuplicates>
<CreateItem Include="%(BRPaths.Identity);%(ConfigPaths.Identity);">
<Output ItemName="FileList" TaskParameter="Include"/>
</CreateItem>
<CreateItem Value="@(BRSearchPath);$(ConfigSearchPath)">
<Output TaskParameter="Value" PropertyName="SecondLevelFiles" />
</CreateItem>
</Target>
<ItemGroup>
<FilesForPackagingFromProject
Include="%(SecondLevelFiles->'$(OutDir)%(FileName)%(Extension)')">
<DestinationRelativePath>$(_PackageTempDir)\bin\%(FileName)%(Extension) </DestinationRelativePath>
<FromTarget>CopySecondLevelDependencies</FromTarget>
<Category>Run</Category>
</FilesForPackagingFromProject>
</ItemGroup>
</Project>