2009-02-10 95 views
2

我有一個msbuild exec任務,調用一個cmd文件來設置我的數據庫。VS 2008編碼和MSBuild執行任務

我使用的MSBuild EXEC任務是這樣的:

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

在設置CMD,它使用OSQL運行我的SQL腳本。

一切都很好,除了當我在VS 2008中創建一個sql文件(表/存儲過程等..)時,編碼(UTF-8?)從MSBuild運行時導致問題。我收到一個不正確的語法錯誤(接近一個看起來像U的字符),但語法正確。如果我在MSBuild之外執行cmd,它將按預期工作。

如果我「另存爲」SQL文件和「保存與編碼」US-ASCII,msbuild不會錯誤,這就是爲什麼我認爲這是一個編碼問題。

雖然「另存爲」現在可行,但似乎應該有更好的方法。我會想象其他人使用MSBuild安裝他們的數據庫已經遇到了這個問題,所以尋找建議/提示。

回答

2

這確實是一個奇怪的問題。解決方法是更新Visual Studio 2008用來創建SQL文件的模板格式。只需在記事本中打開它們並保存爲ANSI(或unicode,無論你喜歡什麼)。從此,當您在Visual Studio中創建新的SQL文件時,它將自動獲得正確的編碼。

你會發現,需要這個目錄下要更新5個.SQL文件:
C:\ Program Files文件\微軟的Visual Studio 9.0 \ Common7 \工具\模板\數據庫項目項