.NET 4.0 Project不能在Windows XP上运行

时间:2014-03-14 14:53:28

标签: c# .net wcf .net-4.0

我在Windows 7 64位计算机上使用Visual Studio 2013开发了一个程序。我有我的项目设置目标框架4.0和我的平台目标为x86。我可以使用它来构建和运行我的64位,以及使用.NET 4.0的Win 7 32位机器,但它不能在XP上运行。

我正在使用BCL Portability Pack和Microsoft Async NuGet包。我已经在XP上安装了.NET 4.0的KB2468871更新。

我还运行了Fusion数据记录器并收到了:

*** Assembly Binder Log Entry  (3/14/2014 @ 9:18:05 AM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  U:\All_Access\UserName\iBEdit\iBedit64Forms\bin\Release\IBEdit.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = USER
LOG: DisplayName = IBEdit.resources, Version=1.0.0.0, Culture=en, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///U:/All_Access/UserName/iBEdit/iBedit64Forms/bin/Release/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = IBEdit.exe
Calling assembly : IBEdit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: U:\All_Access\UserName\iBEdit\iBedit64Forms\bin\Release\IBEdit.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///U:/All_Access/UserName/iBEdit/iBedit64Forms/bin/Release/en/IBEdit.resources.DLL.
LOG: Attempting download of new URL file:///U:/All_Access/UserName/iBEdit/iBedit64Forms/bin/Release/en/IBEdit.resources/IBEdit.resources.DLL.
LOG: Attempting download of new URL file:///U:/All_Access/UserName/iBEdit/iBedit64Forms/bin/Release/en/IBEdit.resources.EXE.
LOG: Attempting download of new URL file:///U:/All_Access/UserName/iBEdit/iBedit64Forms/bin/Release/en/IBEdit.resources/IBEdit.resources.EXE.
LOG: All probing URLs attempted and failed.

没有" en"我项目中的文件夹"发布"夹。这可能导致问题吗?为什么看那里?

我需要对项目进行其他更改吗?

更新

没有给出异常,只有消息:" iBEdit遇到问题,需要关闭"

以下是AppConfig代码:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="SpecSrvSoapBinding"/>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://example.com/TCheckWebServices/services/SpecSrv" binding="basicHttpBinding" bindingConfiguration="SpecSrvSoapBinding" contract="DBService.SpecSrv" name="SpecSrv"/>
        </client>
    </system.serviceModel>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0"/>
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

更新2:

不是真的成功,但我确信管理层试图开发这个应用程序与XP一起工作是一种浪费,他们应该让我集中精力将我们的机器升级到Windows 7。

2 个答案:

答案 0 :(得分:3)

您尝试从app.config加载的内容导致此问题。

也许app.config中的文件位置在XP机器中不存在。

无论如何,看起来像.Net 4.0支持XP问题 看起来它来自你的代码 - 而不是来自.NET“信封”。

对不起,简短的回答,
但是如果你不打算显示任何相关的实际代码 - 这是我能做的最好的。

更新(看到你的配置后):

---&GT; <binding name="SpecSrvSoapBinding"/>我认为这是在XP机器上无法加载的。

要对此进行验证 - 请在app.config中注释此部分,并注释所有使用该部分的代码,然后尝试查看是否再次出现相同的错误。

答案 1 :(得分:0)

您是否尝试使用英语(en)进行本地化编译?我在这个问题上发现了类似的错误,希望可以帮到你, How can I modify my C# project file so that Resources.resx is compiled into the satellite assembly for my UICulture?

您的问题是MVS无法找到 en 本地化资源

  

日志:DisplayName = IBEdit.resources,Version = 1.0.0.0,Culture = en ,   PublicKeyToken = null(完全指定)

如果可能,将Culture = en 更改为Culture = 中立。对不起,如果我误导了你。

您在Windows的其他位置有四个提到的下载URL文件吗?把这些文件放在你提到的release文件夹下,看看发生了什么?好像无法下载那些EXE和DLL来执行?