2009-08-10 9 views
0

J'essaie d'avoir un PostBuildEvent dans mon projet SSIS. C'est mon fichier .DTProj d'origine d'un projet de test avec un paquet de test.Post Build dans le projet SSIS

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <ProductVersion>10.0.2531.0</ProductVersion> 
    <SchemaVersion>9.0.1.0</SchemaVersion> 
    <State>$base64$PFNvdXnRyb2xJbmZvPg==</State> 
    <Database> 
    <Name>PreBeforeDeployTest.database</Name> 
    <FullPath>PreBeforeDeployTest.database</FullPath> 
    </Database> 
    <Cubes /> 
    <Dimensions /> 
    <DataSources /> 
    <DataSourceViews /> 
    <MiningModels /> 
    <Roles /> 
    <Miscellaneous /> 
    <Configurations> 
    <Configuration> 
     <Name>Development</Name> 
     <Options> 
     <OutputPath>bin</OutputPath> 
     <ConnectionMappings /> 
     <ConnectionProviderMappings /> 
     <ConnectionSecurityMappings /> 
     <DatabaseStorageLocations /> 
     </Options> 
    </Configuration> 
    </Configurations> 
    <DTSPackages> 
    <DtsPackage FormatVersion="3"> 
     <Name>TestPackage.dtsx</Name> 
     <FullPath>TestPackage.dtsx</FullPath> 
     <References /> 
    </DtsPackage> 
    </DTSPackages> 
</Project> 

J'ai essayé d'insérer <PostBuildEvent> et il semble que ce

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <PropertyGroup> 
    <PostBuildEvent>copy "$(TargetDir)TestPackage.dtsx" "C:\"</PostBuildEvent> 
    </PropertyGroup> 
    <ProductVersion>10.0.2531.0</ProductVersion> 
    <SchemaVersion>9.0.1.0</SchemaVersion> 
    <State>$base64$PFNvdXnRyb2xJbmZvPg==</State> 
    <Database> 
    <Name>PreBeforeDeployTest.database</Name> 
    <FullPath>PreBeforeDeployTest.database</FullPath> 
    </Database> 
    <Cubes /> 
    <Dimensions /> 
    <DataSources /> 
    <DataSourceViews /> 
    <MiningModels /> 
    <Roles /> 
    <Miscellaneous /> 
    <Configurations> 
    <Configuration> 
     <Name>Development</Name> 
     <Options> 
     <OutputPath>bin</OutputPath> 
     <ConnectionMappings /> 
     <ConnectionProviderMappings /> 
     <ConnectionSecurityMappings /> 
     <DatabaseStorageLocations /> 
     </Options> 
    </Configuration> 
    </Configurations> 
    <DTSPackages> 
    <DtsPackage FormatVersion="3"> 
     <Name>TestPackage.dtsx</Name> 
     <FullPath>TestPackage.dtsx</FullPath> 
     <References /> 
    </DtsPackage> 
    </DTSPackages> 
</Project> 

Le PostBuildEvent ne se déclenche pas du tout. Qu'est-ce que je fais mal ici?

Répondre

1

Qui vous a dit .dtproj prend en charge <PostBuildEvent>? <PostBuildEvent> est pris en charge par les projets MSBUILD, mais .dtproj a un schéma complètement différent et ne connaît tout simplement pas les balises PropertyGroup ou PostBuildEvent.

Si vous voulez juste copier des fichiers .dtsx dans c: \, comme dans cet exemple - vous pouvez changer le OutputPath en c: \, et .dtproj copiera les fichiers .dtsx (et configs) en c: \ au lieu de bin \ répertoire utilisé par défaut.

Si vous avez besoin d'une solution plus générale, je voudrais ajouter un autre projet (qui supporte <PostBuildEvent>) à la solution, et définir des commandes personnalisées là. Ensuite, construisez la solution entière, au lieu de construire juste le projet .dtproj.

+1

@Michael: Pouvez-vous me montrer un exemple où je peux apprendre cela? Je ne suis pas capable de reproduire le comportement de copie dans mon environnement. –

Questions connexes