2010-10-01 80 views
7

我在我的WPF应用程序中收到此错误。我得到这个错误并不总是。如果我做了Clean,然后重建一切都没问题。WPF错误CS0433

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' 

回答

1

这是Scott Hanselman的article讨论WPF的这个问题。

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

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

+0

我不使用思杰。不确定是否因为提到的文章中提供了修补程序。我今天才得到这个错误。它在几个月内完美运行。 – Pashec 2010-10-01 20:07:48

0

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

+0

在一个项目中,我不使用XML序列化程序集生成器,所以我禁用它。它有帮助。但我仍然好奇它为什么会发生,以及如果我需要在两个项目中运行sgen,如何解决它。 – Pashec 2010-10-01 20:35:43

0

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

被用来生成XAML文件CLR类型 工作流程 设计器生成的类。

但是我发现这行代码导致这个类的一代:

<Grid DataContext="{TemplateBinding InternalDataContext}"> 

我与“运行时相当的”替代它:

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

也许这可以帮助别人。

3

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

我们将它重命名为GeneratedInternalTypeHelper$(ProjectName)之类的东西,以便它在整个项目中是唯一的,永不碰撞。我们在所有构建脚本to get ILMerge to work(我同事的私人博客中的博客条目)中都这样做。

+0

为我工作。我把它放在像[这里](http://stackoverflow.com/q/19436532/2772330)这样的后期构建中。 – 2016-11-29 17:12:48

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序列化的兼容性。