VS 2010 配置转换在部署期间会产生不需要的空白

Posted

技术标签:

【中文标题】VS 2010 配置转换在部署期间会产生不需要的空白【英文标题】:VS 2010 configuration transformation produces unwanted white space during deployment 【发布时间】:2011-03-19 00:44:39 【问题描述】:

我使用新的 VS 2010 配置转换来部署网站。要替换我的 ApplicationSettings 的单个设置,我使用以下配置转换:

<setting name="TempPath" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
    <value>C:\TEMP</value>
</setting>

备注: C:\TEMP 和结束标记之间没有空格

这种转换会产生一个带有不需要的空白的设置,如下所示:

<setting name="TempPath" serializeAs="String">
    <value>C:\TEMP
    </value>
</setting>

如果我使用这个设置而不修剪它,我会得到错误的行为。

有什么想法吗?

【问题讨论】:

【参考方案1】:

Xml 格式产生空间。 因为 XML 标记的内容不关心换行符和空格。 如果你想要字符串值,我强烈建议将它放入属性中,而不是 InnerValue

<setting name="TempPath" value="C:\TEMP">
</setting>

【讨论】:

这是标准 ApplicationSettings 之外的一个 sn-p。我认为这里没有机会更改属性。【参考方案2】:

这是 VS 2010 的 known problem。据微软称,它将在服务包和下一个版本中修复。

更新

SP1 的最终版本解决了这个问题。不再需要删除不需要的换行符的解决方法。

【讨论】:

Service Pack 测试版没有解决我的问题,即使它应该解决。【参考方案3】:

我只想提一下,john.rummell 在 MS Connect 问题页面上发布了一个解决方法,它对我来说完美无缺。只需将其添加到您的项目中:

internal sealed partial class Settings

    public override object this[string propertyName]
    
        get
        
            // trim the value if it's a string
            string value = base[propertyName] as string;
            if (value != null)
            
                return value.Trim();
            

            return base[propertyName];
        
        set  base[propertyName] = value; 
    

【讨论】:

我很晚才认出你的答案。这种解决方法也适用于我。 VB.NET 的提示:类名是 MySettings。 您需要确保分部类与原始设置类属于同一命名空间。通常这意味着将 .Properties 添加到分部类的命名空间声明中。

以上是关于VS 2010 配置转换在部署期间会产生不需要的空白的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 嵌入清单

vs2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败:(cc)

vs2010程序运行出错 link : fatal error lnk1123: 转换到 coff 期间失败: 文件无效或损坏

用于调试的 VS 2010 Web.config 转换

解决“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”问题

vs2010 出错:error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(转)