WPF错误CS0433

时间:2010-10-01 20:01:15

标签: .net wpf sgen

我在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'

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

其他有此问题的人通过安装一些修补程序修复了它。查看this article了解详情。

如果您使用的是Citrix,则可能需要check this out。您可能有权限问题。这篇特别的文章涉及ASP .NET应用程序,但您的WPF应用程序可能有类似的问题。这是一个很好的起点。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我试图找出为什么我的库中有这个生成的类 XamlGeneratedNamespace.GeneratedInternalTypeHelper 。 MSDN says没有任何帮助:

  

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

但是我找到了引起这个类生成的代码行:

<Grid DataContext="{TemplateBinding InternalDataContext}">

我用“运行时等效物”替换它:

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

也许这对某些人有帮助。

答案 4 :(得分:0)

你可以在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,而不会破坏与prev序列化的兼容性。