私はWebプロジェクトProject AとライブラリProject Bを持っています。 プロジェクトBはProject A \ Pluginsに組み込まれています。プロジェクトAは、CIのプロジェクトA.のMSBuildのparamsで展開されていないCIプロジェクトBを介して構築されている場合TFS継続的インテグレーションとデシジョン
問題は次のとおり
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\" /t:ProjectA
私はプロジェクトA.csprojに次のコードを追加プロジェクト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>
は(ビルド後にコピーします)細かいようだが、プラグインフォルダは、ターゲット・サーバー上に存在しません。
何か不足していますか?
することで、PROJECTAとProjectBの両方が含まれているの.sln(ソリューション)を持っていない理由があり、 ProjectAはProjectBを "プロジェクト別に"参照します(Visual Studio)。これは物事をより簡単にするでしょう。 – granadaCoder
使用しているTFSのバージョンは? XAMLビルドまたはタスクベースビルドを使用していますか? Pluginフォルダにチェックインしますか?ビルドエージェントマシンにログインし、MSBuildコマンドラインを使用して手動でプロジェクトをビルドして、どのような結果が得られるかを確認してください。 –