公開プロファイルを作成しようとしましたが、公開されたすべてのファイルをさまざまなフォルダにコピーしていました。残念ながら、私はpublishUrl
で直接それを行うことはできませんし、すべてのファイルをコピーする1つのフォルダに発行することをお勧めします。私はコピーターゲット機能を書いていましたが、ターゲットの実行順序は間違っています。 私はVisualStudio 2015から直接ビルド>パブリッシュ・ウェブを通してパブリッシュを実行しようとしています。FileSystemにファイルを公開した後にターゲットを実行する
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
<ExcludeApp_Data>True</ExcludeApp_Data>
<publishUrl>obj\Package\PackageTemp</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<ExcludeFilesFromDeployment>Web.config;package.json;packages.config;Typescript\**;DynamicCss\**;gulpfile.js;</ExcludeFilesFromDeployment>
</PropertyGroup>
<Import Project="AdditionalResources.targets" />
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>AdditionalResources</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<ItemGroup>
<DestLocations Include="D:\PUBLISH_TEST\" />
<DestLocations Include="D:\PUBLISH_TEST2\" />
</ItemGroup>
<Target Name="CopyToDeployFolders" AfterTargets="CopyAllFilesToSingleFolderForPackage" Outputs="%(DestLocations.Identity)">
<ItemGroup>
<PublishedFiles Include="obj\Package\PackageTemp\**\*" />
</ItemGroup>
<Message Importance="high" Text="FilesToCopy: @(PublishedFiles)" />
<PropertyGroup>
<_DeployPathIdentity>%(DestLocations.Identity)</_DeployPathIdentity>
</PropertyGroup>
<Copy SourceFiles="@(PublishedFiles)" DestinationFiles="@(PublishedFiles->'$(_DeployPathIdentity)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
</Project>
次のようにそれが実行されます順序は次のとおりです:私のtempフォルダがまだ公開/作成されていないため、問題がある
Build
AdditionalResources
CopyToDeployFolders
Publish folder
ここ
は私のプロフィールを公開しています。私は自分のCopyToDeployFolders TargetをAfterPublishを上書きするようにしようとしましたが、いろいろなAfterTargetを使用しようとしましたが、それらのどれもうまくいきません - ターゲットが実行されなかったり、
私は を見ることで実行されるターゲットを発見しようとしたC:\プログラムファイル(x86の)\ MSBuildの\これによって示されるように、マイクロソフト\ VisualStudioを\のv14.0 \ウェブ\のMicrosoft.Web.Publishing.targets 答えは Why does MSBuild ignore my BeforePublish target?ですが、正しいものが見つからず、AfterTargetを別のものに変更しようとしましたが、結果は同じです。編集:診断レベルの 出力:
2> Target "GatherAllFilesToPublish" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets" from project "C:\MyProject\MySite\MySite.csproj" (entry point):
2> Done building target "GatherAllFilesToPublish" in project "MySite.csproj".
2>Done building project "MySite.csproj".
2>Deleting existing files...
2>Publishing folder /...
... files being published ...
2>Web App was published successfully file:///C:/MyProject/MySite/MySite/obj/Package/PackageTemp
2>
EDIT2:AdditionalResources.targets
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AdditionalResources">
<ItemGroup>
<AddFiles Include="$(ProjectDir)\App_Themes\**\Basic\Dynamic.css">
<CustomPath>App_themes\</CustomPath>
</AddFiles>
<AddFiles Include="C:\y\SharedDLL\Clients\Web\bin\**\*.dll">
<CustomPath>bin\</CustomPath>
</AddFiles>
<AddFiles Include="C:\y\SharedDLL\Clients\Web\resources\**\ctrl_res\**\*.*" />
<AddFiles Include="C:\y\SharedDLL\Clients\Web\resources\js\**\*.*">
<CustomPath>js\</CustomPath>
</AddFiles>
<AddFiles Include="C:\y\SharedDLL\Clients\Web\resources\**\ClientBin\**\*.xap" />
<AddFiles Include="C:\y\SharedDLL\Clients\Web\resources\FileUpload\**\*.js">
<CustomPath>js\</CustomPath>
</AddFiles>
<!-- Minified files should be copied last to override non-minified ones -->
<AddFiles Include="$(ProjectDir)\MINIFIED_FILES\**\*.*" />
</ItemGroup>
<ItemGroup>
<FilesForPackagingFromProject Include="%(AddFiles.Identity)">
<DestinationRelativePath>%(AddFiles.CustomPath)%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>
診断に設定されたMSBuild冗長性を持つファイル名を指定して実行、それはその後、ちょうどAfterTargetsで使用するために適切なものを選んで、すべてのターゲットが表示されます。 – stijn
@stijnこれを試しましたが、ファイルの公開が開始されるときにはターゲットがありません。私の質問は出力なしで更新されました。 – CrudaLilium
@CrudaLilium、パブリッシュプロファイルでサンプルを作成しましたが、テスト後にターゲットCopyToDeployFoldersがパブリッシュされた後に実行されたことがわかりました(AddResources.targetsファイルがないため、ターゲットのAdditionalResourcesにコメントします)。 AddResources.targetsファイルを共有したり、onedriveでサンプルをテストしたり、ここでリンクを共有して、この問題を再現できるようにしてください。 –