我正在尝试使用Jenkins进行基于.NET 4.0的Web应用程序的自动构建/部署。Web应用程序项目具有多个项目引用,这些引用又具有第三方DLL的二进制引用。
问题如下:
1. 二级引用(项目引用的引用)未被拉入用于构建部署包的
根据Microsoft的确认,这是一个不会修复的问题here。
我的自定义MyWebProj.wpp.targets文件如下:
问题如下:
1. 二级引用(项目引用的引用)未被拉入用于构建部署包的
obj\\Package\PackageTmp\bin
文件夹中的bin文件夹中。
2. 当我在Visual Studio中构建时,二级引用被拉入常规构建输出目录中。
3. 使用MSBuild构建时,二级依赖项既未被拉入常规输出目录中,也未被拉入PackageTmp\bin
目录中。根据Microsoft的确认,这是一个不会修复的问题here。
相关问题这里, 这里和这里要么与我的问题不匹配,要么提供的解决方案不起作用。我已经查看了所有答案,而不仅仅是被接受的答案。
我的构建命令如下(使用MSBuild 4.0):
MSBuild MySolution.sln /p:Configuration=Integration /p:platform="Any CPU" /t:Clean,Build /p:DeployOnBuild=true /p:DeployTarget=Package /p:AutoParameterizationWebConfigConnectionStrings=false
我尝试手动编辑项目文件中的Reference元素,添加<Private>True</Private>
,但没有成功。
我正在尝试解决这个已知问题,以便我的二级依赖项能够自动且正确地拉入Web发布临时目录。
我的当前尝试结合了通用方法here(通过在网站项目文件旁边添加MyProject.wpp.targets文件来自定义Web发布流程),以及一些MSBuild代码来查找DLLhere。到目前为止,这要么没有产生结果,要么破坏了项目文件。我对自定义MSBuild代码很陌生,觉得它相当深奥。 我的问题:我正在寻找一个更完整的例子,适用于我的特定情况。我认为目标是干预收集要复制到包临时目录的文件的Web发布流程,并将二级依赖项添加到其中。我的自定义MyWebProj.wpp.targets文件如下:
<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>