2012-09-02 12 views
9

Ich verwende die Visual Studio 2012-Paket-Funktion für Websites, und ich habe ein benutzerdefiniertes Ziel, einige Unterordner in das Paket Ziel vor dem Zippen des Ordners zu sammeln .. Dies verwendet, um gut in vs10 aber mit dem neuen packager vs12 kümmert es sich nicht mehr um eine dieser Konfigurationen und sie wurden nicht korrekt migriert eine Möglichkeit, etwas ähnliches zu tun, so dass mein Paket schließlich diese Dateien haben wird?CopyAllFilesToSingleFolderForPackageDependsOn wird nicht mehr von vs12 unterstützt

Dies ist, wie es in VS10 aussehen verwendet:

<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> 

Dies wird vollständig in das neue Projekt ignoriert. Was ist eine gute Methode, etwas Ähnliches zu tun?

Antwort

13

Lösung gefunden, benennen Sie einfach CopyAllFilesToSingleFolderForPackageDependsOn in CopyAllFilesToSingleFolderForMsdeployDependsOn um, und die Dateien sollten im Bereitstellungspaket enthalten sein.

BTW ist dieses nicht immer noch die beste Lösung, da Sie beide VS12 pflegen müssen & vs 10

2

Ein weiterer Ansatz, der auch und erfordert weniger Wartungsarbeiten zu unterstützen ..

<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

Dies ist eine zu sein scheint gute Lösung, aber es funktioniert nicht in VS 2013. Scheint, dass BeforeTargets/AfterTargets in den .pubxml-Dateien ignoriert werden – nZeus

+0

@nZeus Ich versuche generell zu vermeiden, wegen solcher Probleme zu veröffentlichen. Sie können MSBuild-Skript erstellen und tun es so , dann wird es funktionieren. – ostati

Verwandte Themen