2012-09-02 12 views
9

私はWebサイト用のVisual Studio 2012パッケージ機能を使用しています。フォルダを圧縮する前に、いくつかのサブフォルダをパッケージ宛先に収集するカスタムターゲットがあります。 これはうまくいきましたvs10を使用していますが、新しいパッケージャvs12では、これらの設定に関心がなくなり、正しく移行されていません。 何か似たようなことをする方法はありますか?CopyAllFilesToSingleFolderForPackageDependsOnはvs12でサポートされなくなりました

これは、VS10のように見えるために使用されるものです:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <!-- Begin copy Contracts &Provider directories --> 
    <CopyAllFilesToSingleFolderForPackageDependsOn> 
     CustomCollectFiles; 
     $(CopyAllFilesToSingleFolderForPackageDependsOn); 
    </CopyAllFilesToSingleFolderForPackageDependsOn> 
    <DesktopBuildPackageLocation>..\Package\Release\projectname.zip</DesktopBuildPackageLocation> 
    <DeployIisAppPath>projectname</DeployIisAppPath> 
    <!-- End copy Contracts &Provider directories --> 
    </PropertyGroup> 

    <Target Name="CustomCollectFiles"> 
    <ItemGroup> 
     <_CustomFiles Include="$(OutputPath)\Contracts\**\*" /> 
     <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> 
     <DestinationRelativePath>bin\Contracts\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> 
     </FilesForPackagingFromProject> 
    </ItemGroup> 
    <ItemGroup> 
     <_CustomFiles Include="$(OutputPath)\Providers\**\*" /> 
     <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> 
     <DestinationRelativePath>bin\Providers\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> 
     </FilesForPackagingFromProject> 
    </ItemGroup> 

これは完全に新しいプロジェクトでは無視されます。何か似たようなことをする良い方法は何ですか?

答えて

13

解決方法を見つけたらCopyAllFilesToSingleFolderForPackageDependsOnからCopyAllFilesToSingleFolderForMsdeployDependsOnに名前を変更し、ファイルを展開パッケージに含める必要があります。

あなたは10

2

対も動作し、より少ないメンテナンスを必要とさらに別のアプローチをVS12 &をサポートするために、両方を維持する必要があるためところで、これはまだ

<Target Name="CustomFolderDeploy" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish"> 
    <PropertyGroup> 
     <CustomFolder>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\..\..\..\Lib\CustomFolder'))</CustomFolder> 
    </PropertyGroup> 
    <CreateItem Include="$(CustomFolder)\*.*"> 
     <Output TaskParameter="Include" ItemName="CustomFiles" /> 
    </CreateItem> 
    <Copy SourceFiles="@(CustomFiles)" DestinationFolder="$(MSBuildProjectDirectory)\obj\$(Configuration)\Package\PackageTmp\bin" SkipUnchangedFiles="True" ContinueOnError="False" /> 
    </Target> 
+1

...最適なソリューションをイマイチこれがあると思われます良いソリューションですが、VS 2013では動作しません.PubxmlファイルでBeforeTargets/AfterTargetsが無視されているようです。 – nZeus

+0

@nZeus私は一般的に、このような問題のために公開を避けようとしています。MSBuildスクリプトを作成し、 、それは動作します。 – ostati

関連する問題