我有一个msbuild exec任务,它调用cmd文件来设置我的数据库。
我正在使用这样的msbuild exec任务:
<Exec Command="$(SqlFolder)\Setup\SetupDatabase.cmd $(DBServer) MyDB $(SqlCmdRunner)" IgnoreExitCode="False">
<Output TaskParameter="ExitCode" ItemName="DBSetupExitCode"/>
</Exec>
在setup cmd中,它使用osql来运行我的sql脚本。
一切都很好,除了当我在VS 2008中创建一个sql文件(table / stored proc等)时,编码(UTF-8?)在我从MSBuild运行时会出现问题。我收到不正确的语法错误(在看起来像U的字符附近),但语法是正确的。如果我在MSBuild外部执行cmd,它将按预期工作。
如果我“另存为”sql文件和“使用编码保存”US-ASCII,msbuild将不会输出错误,这就是我认为这是编码问题的原因。
虽然“另存为”目前有效,但似乎应该有更好的方法。我会想象其他人使用MSBuild设置他们的数据库遇到了这个问题,所以寻找建议/提示。
答案 0 :(得分:2)
这确实是一个奇怪的问题。解决方法是更新Visual Studio 2008用于创建SQL文件的模板格式。只需在记事本中打开它们并保存为ANSI(或unicode,无论您喜欢哪个)。从那时起,当您在Visual Studio中创建新的SQL文件时,它将自动获得正确的编码。
您将在此目录下找到五个需要更新的.SQL文件:
C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ Templates \ Database Project Items