VS 2008编码和MSBuild执行任务

时间:2009-02-10 16:11:55

标签: visual-studio-2008 encoding msbuild

我有一个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设置他们的数据库遇到了这个问题,所以寻找建议/提示。

1 个答案:

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