2009-02-10 63 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 \工具\模板\数据库项目项