2009-02-10 5 views
2

J'ai une tâche exec msbuild qui appelle un fichier cmd pour configurer ma base de données.VS 2008 Encodage et MSBuild Exec Tâche

J'utilise la tâche exec msbuild comme ceci:

<Exec Command="$(SqlFolder)\Setup\SetupDatabase.cmd $(DBServer) MyDB $(SqlCmdRunner)" IgnoreExitCode="False"> 
     <Output TaskParameter="ExitCode" ItemName="DBSetupExitCode"/> 
    </Exec> 

Dans les cmd de configuration, il utilise osql pour exécuter mes scripts SQL.

Tout va bien, sauf que lorsque je crée un fichier sql (table/proc stocké, etc.) dans VS 2008, l'encodage (UTF-8?) Provoque un problème lorsque je cours depuis MSBuild. Je reçois une erreur de syntaxe incorrecte (près d'un caractère qui ressemble à un U), mais la syntaxe est correcte. Si j'exécute le cmd en dehors de MSBuild cela fonctionne comme prévu. Si je "Save As" le fichier sql et "Save with Encoding" US-ASCII, msbuild ne fera pas d'erreur, c'est pourquoi je pense qu'il s'agit d'un problème de codage. Alors que le "Save As" fonctionne pour l'instant, il semble qu'il devrait y avoir un meilleur moyen. J'imagine que d'autres personnes utilisant MSBuild pour configurer leur DB ont rencontré ce problème, donc à la recherche de conseils/astuces.

Répondre

2

C'est en effet un problème bizarre. Le moyen de contourner est de mettre à jour le format de modèle que Visual Studio 2008 utilise pour créer des fichiers SQL. Ouvrez-les simplement dans le Bloc-notes et enregistrez-les en tant que ANSI (ou unicode, selon votre préférence). À partir de ce moment, lorsque vous créez un nouveau fichier SQL dans Visual Studio, il recevra automatiquement le codage approprié.

Vous trouverez cinq fichiers .SQL qui doivent être mis à jour dans ce répertoire:
C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ Templates \ Les éléments du projet de base de données