Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在发布模式下编译silverlight程序集时缺少IL偏移量_.net_Silverlight_Il - Fatal编程技术网

.net 在发布模式下编译silverlight程序集时缺少IL偏移量

.net 在发布模式下编译silverlight程序集时缺少IL偏移量,.net,silverlight,il,.net,Silverlight,Il,我跟着。这在调试模式下构建时非常有效,但是我们的生产/qa构建过程使用发布模式编译所有内容,这似乎会丢失IL偏移量信息。在释放模式下,所有IL偏移最终为“0xFFFFFF”。使用reflector比较调试/发布程序集时,我注意到使用的方式不同 调试生成: [assembly: AssemblyVersion("1.0.0.0")] [assembly: ComVisible(false)] [assembly: Debuggable(DebuggableAttribute.DebuggingMo

我跟着。这在调试模式下构建时非常有效,但是我们的生产/qa构建过程使用发布模式编译所有内容,这似乎会丢失IL偏移量信息。在释放模式下,所有IL偏移最终为“0xFFFFFF”。使用reflector比较调试/发布程序集时,我注意到使用的方式不同

调试生成:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.EnableEditAndContinue | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]
[assembly: AssemblyConfiguration("Debug")]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)]
[assembly: Extension]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework("Silverlight,Version=v5.0", FrameworkDisplayName="Silverlight 4")]
[assembly: AssemblyCopyright("Copyright @ Foo Company 2010-2012")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("Foo.Ria.Bar")]
[assembly: AssemblyCompany("Foo Company")]
[assembly: AssemblyProduct("Foo Product")]
vs发布版本:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows=true)]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyTitle("Foo.Ria.Bar")]
[assembly: AssemblyTrademark("")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: TargetFramework("Silverlight,Version=v5.0", FrameworkDisplayName="Silverlight 4")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyCompany("Foo Company")]
[assembly: AssemblyProduct("Foo Product")

类控制运行时如何处理模块内的代码。运行时可能会跟踪有关生成代码的额外信息,并且可能会基于此属性中包含的值禁用某些优化


有人有调整设置的经验吗?是否存在不完全禁用优化()的解决方法?

编译器添加
DebuggableAttribute
以控制JIT代码生成。 事实上,当代码被认为是可调试的,并且某些优化没有发生时,生成的代码是不同的

如果需要调整生成的程序集,则需要转储IL、更改属性并通过以下方式重新编译:创建可由传统文本编辑器更改的人类可读的IL源,同时用于重新编译

这个过程可以在您的构建中自动化。请记住,您正在处理由编译器生成的、不应该被触碰的东西

重要提示:如果使用强名称和/ir authenticode,则需要再次对程序集进行签名。

您可能希望签出以部分禁用优化。但是,不能在程序集级别使用此属性。我不确定这是否能解决你的问题。我通常使用此属性来不内联优化某些方法。。