我的web.debug.config
和web.release.config
文件遇到了一些问题。
更具体地说,我的网页只会使用默认的web.config
文件,并完全忽略debug
和release
个文件。
这不仅发生在我本地运行项目时,而且当我将它发布到IIS服务器时。
我正在使用Visual Studio 2010 Ultimate(没有Service Pack)。
以下是配置文件:
web.config
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="MyConn" connectionString="SomeConnectionString"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
web.debug.config
和web.release.config
:
<?xml version="1.0"?>
<configuration xmlns:xtd="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyConn" connectionString="SomeOtherConnectionString"
providerName="System.Data.SqlClient"
xtd:Transform="Replace"
xtd:Locator="Match(name)"/>
</connectionStrings>
</configuration>
正如我之前提到的,网站使用web.config
文件中的连接字符串,而不使用web.release.config
中的连接字符串。
另一个有趣的一点是,在我发布项目的物理文件夹中,存在所有三个config
文件;每个都与VS解决方案中出现的完全相同。
建议,有人吗?
答案 0 :(得分:4)
您需要运行转换。如果您只将3 web.config放在您的文件夹中,它将无法工作。您可以运行它,它将转换您的web.config
MSBuild.exe Project.csproj /T:TransformWebConfig /P:Configuration=Release
然后,您将在构建时在obj文件夹中创建一个名为TransformWebConfig的文件夹。转换后的web.config将在此。
您还可以查看这篇文章,他创建了一个构建目标来自动实现这一目标。
http://vishaljoshi.blogspot.com/2010/05/applying-xdt-magic-to-appconfig.html
答案 1 :(得分:3)
我弄清楚我做错了什么。
我没有使用网站应用,而是使用网站项目。
(两者之间的区别在于 Project 实际上并不包含.proj
文件。多么具有讽刺意味。)
既然我已经意识到实际的问题,那么事实证明我并不是第一个... 以下是使用解决方案解决方案的上一篇文章的链接:
How do I do Web.config Transformations with Visual Studio Website Projects?