2017-09-26 23 views
0

Un projet dans .NET Framework 2.0 utilisant System.ServiceModel ne se compile pas sur une machine Windows 7, mais compile sur une machine Windows Server 2008 R2. Pouvez-vous expliquer pourquoi?System.ServiceModel avec .NET 2.0 sous Windows 7 et Windows Server 2008 R2

Le fichier projet Test1.vbproj:

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
    <PropertyGroup> 
    <OutputType>Library</OutputType> 
    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> 
    <OutputPath>bin\Debug</OutputPath> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Compile Include="IService1.vb" /> 
    </ItemGroup> 
    <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" /> 
</Project> 

Le IService1.vb:

Imports System.ServiceModel 
<ServiceContract()> Public Interface IService1 
    <OperationContract()> Function Function1() As String 
End Interface 

Sur une machine Windows 7 32bit ce projet ne compile pas, l'affichage des messages d'erreur:

Le type 'OperationContract' n'est pas défini.
Le type 'ServiceContract' n'est pas défini.

Sur un ordinateur Windows Server 2008 R2 64 bits, ce projet est compilé avec succès.

Le projet ouvert sur la machine Windows 7:

enter image description here

Le projet ouvert sur le machine Windows Server 2008 R2:

enter image description here

Les cadres .NET installé sur Windows 7 machine:

enter image description here

Les cadres .NET installés sur la machine Windows Server 2008 R2:

enter image description here

La fonctionnalités de Windows sur la machine Windows 7:

enter image description here

Les fonctionnalités Windows sur Windows Serveur 2008 R2 machine:

enter image description here

Les propriétés de la machine Windows 7:

enter image description here

Les propriétés de la machine Windows Server 2008 R2:

enter image description here

Est-ce que quelqu'un a une idée, pourquoi il ne compile pas sur Windows 7 machine, mais compile sur la machine Windows Server 2008 R2?

Je dois le compiler sur la machine Windows 7, sans changer le code, ni le fichier du projet. Par conséquent, je dois installer ou configurer quelque chose sur la machine Windows 7.

+0

Avez-vous installé .net 3.5 sp1 en fonctions optionnelles? – magicandre1981

+0

Oui, sur les deux machines .NET 3.5 est installé. J'ai ajouté les captures d'écran de Windows Features pertinentes dans la question. – Alex

Répondre

0

Dans le registre Windows, j'ai demandé à .NET Framework 2.0 de rechercher également les assemblys dans le dossier .NET Framework 3.0. J'ai mis le code suivant dans un fichier nommé DotNET3.0Compatiblity.reg:

Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\.NET 3.0 Compatiblity] 
@="C:\\Program Files\\Reference Assemblies\\Microsoft\\Framework\\v3.0" 

J'ai double-cliqué sur le fichier et l'entrée de registre requise a été créée. Vous pouvez voir dans l'image suivante, que System.ServiceModel.dll se trouve maintenant dans le dossier C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.ServiceModel.dll.

Project Test1.vbproj compiles without errors