我有一个Web项目Project A和一个库Project B. 项目B正在构建到项目A \ Plugins中。
问题是当项目A通过CI构建时项目B未与项目A一起部署.CI中的MSBuild参数是:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\" /t:ProjectA
我将以下代码添加到Project A.csproj中,以使用A:
部署Project B. <ItemGroup>
<ProjectsToBuild Include="..\..\Plugins\**\*ProjectB*proj" />
</ItemGroup>
<Target Name="Plugin" AfterTargets="Build">
<Message Text="Building Plugins" Importance="High" />
<MSBuild Projects="@(ProjectsToBuild)" ContinueOnError="false" Properties="Configuration=$(Configuration)">
<Output ItemName="OutputFiles" TaskParameter="TargetOutputs" />
</MSBuild>
<CallTarget Targets="CopyPlugins"/>
</Target>
<PropertyGroup>
<PluginDirectory>Plugins</PluginDirectory>
</PropertyGroup>
<Target Name="CopyPlugins">
<Message Text="Copying plugins to $(_PackageTempDir)\Plugins\ ($(ProjectDir)$(PluginDirectory))" Importance="high" />
<CreateItem Include="$(ProjectDir)$(PluginDirectory)\**\*.*">
<Output TaskParameter="Include" ItemName="PluginFiles" />
</CreateItem>
<Copy DestinationFolder="$(_PackageTempDir)\Plugins\" SourceFiles="@(PluginFiles)" SkipUnchangedFiles="true" />
</Target>
在日志执行顺序中看起来很好(构建后复制),但在部署后,目标服务器上不存在Plugin文件夹。
我错过了什么吗?
答案 0 :(得分:0)
根据您的描述,您需要将Project A \ Plugins文件夹签入TFS。但是没有建议。
我们建议您在同一解决方案中创建项目引用,或者创建NuGet以进行包管理。建议您在项目B的build a nuget package和publish this Nuget package,然后在构建项目时restore the library到项目A.
答案 1 :(得分:0)
文件需要包含在项目中。由于文件是动态生成的,因此您可以将此代码添加到项目文件(例如XX.csproj)
<Content Include="plugin\**\*.*" />