【问题标题】:WPF error CS0433WPF 错误 CS0433
【发布时间】:2011-04-20 01:11:22
【问题描述】:

我的 WPF 应用程序中出现此错误。我并不总是得到这个错误。如果我先清理然后重建一切正常。

SGEN (0,0):                                             
error: Unable to generate a temporary class (result=1).

SGEN (0,0):
errorCS0433: The type 'XamlGeneratedNamespace.GeneratedInternalTypeHelper' exists in both 'library1.dll' and 'library2.dll'

【问题讨论】:

    标签: .net wpf sgen


    【解决方案1】:

    您可以在 c:\Users\\AppData\Local\Temp\ 中找到 XmlSerializer 生成的代码 运行您的应用程序后,它将是 something.cs。 我的是:“me2ywucq.0.cs”,只是在它的代码中搜索你的类型名称。

    您还可以在运行时创建程序集时更改其写入代码的路径 见Changing where XmlSerializer Outputs Temporary Assemblies by scott
    将以下内容添加到您的 app.config 或 web.config:

    <system.xml.serialization> 
      <xmlSerializer tempFilesLocation="c:\\foo"/> 
    </system.xml.serialization> 
    

    找到代码后,您可以自己将其编译成 myAssembly.XmlSerializers.dll 或在代码中实现 IXmlSerializer,而不会破坏与先前序列化的兼容性。

    【讨论】:

      【解决方案2】:

      您可以使用 RummageTypeRenamer,这是一个与我们的混淆器 Rummage 捆绑在一起的免费工具(我为 Aldaray 工作),将 GeneratedInternalTypeHelper 类型重命名为其他名称。

      我们将其重命名为 GeneratedInternalTypeHelper$(ProjectName) 之类的名称,以便它在项目中是独一无二的,并且不会发生冲突。我们在所有构建脚本中都这样做to get ILMerge to work(我同事私人博客中的博客条目)。

      【讨论】:

      • 为我工作。我把它放在后期构建中,比如here
      【解决方案3】:

      我试图弄清楚为什么我的库中有这个生成的类 XamlGeneratedNamespace.GeneratedInternalTypeHelper。 MSDN says 没什么用:

      工作流生成的类 用于生成 CLR 类型的设计器 用于 XAML 文档。

      但我找到了导致生成此类的代码行:

      <Grid DataContext="{TemplateBinding InternalDataContext}">
      

      我将其替换为“运行时等效项”:

      <Grid DataContext="{Binding InternalDataContext, RelativeSource={RelativeSource TemplatedParent}}">
      

      也许它可以帮助某人。

      【讨论】:

        【解决方案4】:

        这是 Scott Hanselman 为 WPF 讨论此问题的 article

        其他遇到此问题的人已通过安装一些修补程序来解决此问题。查看this article了解更多信息。

        如果您使用 Citrix,您可能需要check this out。您可能有权限问题。此特定文章处理 ASP .NET 应用程序,但您的 WPF 应用程序中可能存在类似问题。这是一个很好的起点。

        【讨论】:

        • 我不使用 Citrix。不确定是否因为提到的文章中提供了修补程序。我今天才收到这个错误。它工作了几个月。
        【解决方案5】:

        此错误来自持久编译的 XML 序列化程序集生成器。它从 XML 可序列化类型生成类。如果不使用,可以在项目属性中取消勾选。

        【讨论】:

        • 在一个项目中,我不使用 XML 序列化程序集生成器,因此我禁用了它。它有帮助。但我仍然很好奇为什么会发生这种情况以及如果我需要在两个项目中运行 sgen 时如何解决它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-23
        • 2014-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        相关资源
        最近更新 更多