![](/img/trans.png)
[英]Application failed to start because its side-by-side configuration is incorrect
[英]Fix a side-by-side error in .NET application
我正在将C#程序从Visual Studio 2010移植到Visual Studio2013。两者都是IDE的Express版本。 在2013年的版本中,我遇到了并行失败。
The application has failed to start because its side-by-side configuration is incorrect.
sxstrace.exe
工具没有提供我能够有用解释的任何信息。 这是该工具的可读输出。
开始激活上下文生成。
输入参数:
标志= 0
ProcessorArchitecture = AMD64
CultureFallBacks = zh-CN; en; zh-CN
ManifestPath = C:\\ Users \\ Brian \\ Documents \\ Visual Studio 2013 \\ Projects \\ WebInterface1 \\ WebInterface1 \\ bin \\ Debug \\ WebInterface1.exe
AssemblyDirectory = C:\\ Users \\ Brian \\ Documents \\ Visual Studio 2013 \\ Projects \\ WebInterface1 \\ WebInterface1 \\ bin \\ Debug \\
应用程序配置文件= C:\\ Users \\ Brian \\ Documents \\ Visual Studio 2013 \\ Projects \\ WebInterface1 \\ WebInterface1 \\ bin \\ Debug \\ WebInterface1.exe.Config
信息:解析应用程序配置文件C:\\ Users \\ Brian \\ Documents \\ Visual Studio 2013 \\ Projects \\ WebInterface1 \\ WebInterface1 \\ bin \\ Debug \\ WebInterface1.exe.Config。
错误:激活上下文生成失败。
结束激活上下文生成。
由于缺乏足够的信息,我怀疑问题可能与Interop有关,因此我进行了一些实验,但都没有一个解决问题。
该应用程序可与Excel(最初是Office 2003 Professional
Excel 2003
互操作。 由于Office 2003 Professional
已过时,因此我升级到Office 2013 Home and Student
并转换了应用程序需要与之互操作的Excel文件。 运行我的应用程序时,升级没有显着差异。 并排故障仍然存在。
Interop DLL是Microsoft.Office.Interop.Excel.dll
(类似于VS 2010项目中的“源代码”,在此之前是VS 2008项目,因此我不知道其谱系),但为了尝试使用任何随机方法来解决并行问题,我尝试使用其他引用来重新构建。 在“ Add Reference > Assemblies > Framework
,没有似乎与Excel Interop相关的引用。 同样,“ Add Reference > Assemblies > Extensions
下也没有任何内容。 我之所以这么说是因为在其他Q和A (链接)中 ,您可以看到在VS 2012和VS 2010中,似乎应该可以通过在引用管理器中找到Microsoft.Office.Interop.Excel
来解析引用,但是不幸的是,不在我的VS 2013安装中。
在“ Add Reference > COM
,有一个称为Microsoft Excel 15.0 Object Library (Version 1.8)
的引用。 这样可以构建项目,但并排故障仍然存在。 这个MSDN页面似乎表明这是使用VS 2013时解析引用的正确方法,因此我不必担心DLL的血统已经有几年了。
我还应该尝试什么解决并排故障?
更新我删除了所有支持C ++的VS Redistributable。 如前所述,我正在使用C#。 我删除并重新安装了VS2013。删除了Office2003。 side-by-side configuration is incorrect
故障仍然存在。
这个答案消除了在激活应用程序时出现的并行错误消息,但是我对该问题的了解不足,无法说出它是否接近一个好的答案。
此答案假定Excel Interop由Visual Studio 2013的“ Add Reference > COM
,其中有一个称为Microsoft Excel 15.0 Object Library (Version 1.8)
的引用。
对于应用程序的.EXE,创建一个Visual Studio App.config
并在其中包含以下元素。
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
对解决方案中的每个.DLL依赖项都执行相同的操作。 如果正在构建库,则VS 2013默认情况下不会创建App.config
,但是可以通过在解决方案浏览器中右键单击该项目来轻松生成它。
通过将useLegacyV2RuntimeActivationPolicy
属性设置为true
,消息side-by-side configuration is incorrect
,并且在激活时带有该消息的对话框将不再出现。
如果是true
则以下引用适用。
为选定的运行时启用.NET Framework 2.0运行时激活策略,该策略是将旧版运行时激活技术(例如CorBindToRuntimeEx函数)绑定到从配置文件中选择的运行时,而不是将它们限制在CLR版本2.0中。 因此,如果从配置文件中选择了CLR版本4或更高版本,则使用所选的CLR版本加载使用.NET Framework早期版本创建的混合模式程序集。 设置此值可防止CLR 1.1版或CLR 2.0版加载到同一进程中,从而有效地禁用进程内并行功能。
如果为false
,则使用以下引号。
对.NET Framework 4和更高版本使用默认的激活策略,该策略是允许旧版运行时激活技术将CLR 1.1或2.0版本加载到该过程中。 设置此值可防止将混合模式程序集加载到.NET Framework 4或更高版本中,除非它们是使用.NET Framework 4或更高版本构建的。 此值为默认值。
v4.0
的值和sku
值只是生成WPF应用程序时Visual Studio 2013(在安装了.NET Framework 4.5.1的系统上)的默认值,因此实际值可能会随IDE的版本而有所不同您正在使用。 v4.0
的示例值和sku
值可能需要针对特定情况进行调整。
链接:
我也遇到了同样的错误,结果是我的应用程序配置文件中有一个条目导致该错误:
<add key="EmailNotificationList" value="this&that@doamin.com;theotherthing@domain.com"/>
...我必须更改为:
<add key="EmailNotificationList" value="this&that@doamin.com;theotherthing@domain.com"/>
希望这对某人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.