【问题标题】:Visual Studio 2010: Properties.Settings broken after retargetting project to .NET Framework 3.5Visual Studio 2010:将项目重定向到 .NET Framework 3.5 后,Properties.Settings 中断
【发布时间】:2011-12-29 19:07:50
【问题描述】:

我已将项目更改为目标

  • .NET Framework 3.5

而不是

  • .NET Framework 4.

现在,每当我尝试访问设置时,项目就会崩溃:

Settings.Designer.cs:

      return ((global::System.Drawing.Font)(this["DefaultFont"]));

除了 `global::System.Drawing.Font)(this["DefaultFont"]));

为 applicationSettings/GrobManagementSystem.Properties.Settings 创建配置节处理程序时出错:无法加载文件或程序集“系统,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”或其依赖项之一。该系统找不到指定的文件。 (C:\Develop\Contoso\GrobFrobber强调文本\GrobManagementSystem\GrobManagementSystem\bin\Debug\GrobManagementSystem.vshost.exe.config 第 8 行)

问题在于 MyApp.exe.config 包含对 .NET Framework 4.0 (4.0.0.0) 的引用:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" 
              type="System.Configuration.UserSettingsGroup, System, 
                    Version=4.0.0.0, 
                    Culture=neutral, PublicKeyToken=b77a5c561934e089">

这个文件是在每次构建时生成的,它基于Settings.settings 的内容(一个在任何地方都没有提到4.0.0.0 的xml 文件):

<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="GrobManagementSystem.Properties" GeneratedClassName="Settings">
  <Profiles />
  <Settings>

还有设置代码隐藏文件 (Settings.Designer.cs),也没有在任何地方提及 4.0.0.0

namespace GrobManagementSystem.Properties {


    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

        public static Settings Default {
            get {
                return defaultInstance;
            }
        }

当项目不是 4.0 时,为什么生成的 MyApp.exe.config 引用 .NET 4.0(即 4.0.0.0):

设计师不是4.0?

还有一个更大的问题:

如何将项目从 .NET Framework 4.0 重新定位到 .NET Framework 3.5

【问题讨论】:

    标签: .net visual-studio-2010 .net-3.5


    【解决方案1】:

    Found the answer,删除app.config

    app.config 是基于settings.settings 自动创建的。 Visual Studio 并未构建它,即使它需要更新。

    注意:清理和重建不会强制 Visual Studio 清理和重建它

    删除它,强制 Visual Studio 重建,它修复它。

    【讨论】:

    • 如果您有自己的 app.config 设置,请不要删除它! (在 .settings 文件之外,即..)--链接的答案继续解释说,当您从 4.0 恢复时,它不会拉出所有 4.0 构造,因此 3.5 吓坏了。就我而言,我只是对以前工作的提交做了一个差异,并且可以看到当我进入 4.0 时它插入了什么
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2012-06-15
    • 2012-06-29
    • 2011-02-23
    • 2011-06-03
    • 2011-02-19
    • 2015-03-15
    • 1970-01-01
    相关资源
    最近更新 更多