When we try and install our COM+ components using a client proxy from our Windows 2003 machine onto our XP machines we always get an error during installation on the client machine (see below). Now if we select the option "Save COM+ Component in 1.0 format..." when creating the client side proxy installer on the server the installation always works. Now my understanding is that XP and 2003 use the same version of COM+ and I have also checked to make sure that our COM+ component is not on the client machine when we run the client proxy installation (checked the gac and also the registry). Any help would be appreciated in solving this problem as we would like to keep our proxies in the 1.5 COM+ format
First Error
System.IO.FileNotFoundException: File or assembly name YW.Applications.ROD2.Common, or one of its dependencies, was not found
File name: "YW.Applications.ROD2.Common
at System.Reflection.Assembly.GetExportedTypes(
at System.Runtime.InteropServices.RegistrationServices.GetRegistrableTypesInAssembly(Assembly assembly
at System.Runtime.InteropServices.RegistrationServices.RegisterAssembly(Assembly assembly, AssemblyRegistrationFlags flags
at System.EnterpriseServices.Internal.Publish.RegisterAssembly(String AssemblyPath
=== Pre-bind state information ==
LOG: DisplayName = YW.Applications.ROD2.Common, Version=1.0.1566.24227, Culture=neutral, PublicKeyToken=2e97d1cc03514dc
(Fully-specified
LOG: Appbase = C:\WINNT\system32LOG: Initial PrivatePath = NUL
Calling assembly : YW.Applications.ROD2.Components.UserService, Version=1.0.1566.24233, Culture=neutral, PublicKeyToken=07faf84f6e0dbcd2
==
LOG: Publisher policy file is not found
LOG: Host configuration file not found
LOG: Using machine configuration file from C:\WINNT\Microsoft.NET\Framework\v1.1.4322\config\machine.config
LOG: Post-policy reference: YW.Applications.ROD2.Common, Version=1.0.1566.24227, Culture=neutral, PublicKeyToken=2e97d1cc03514dc
LOG: Attempting download of new URL file:///C:/WINNT/system32/YW.Applications.ROD2.Common.DLL
LOG: Attempting download of new URL file:///C:/WINNT/system32/YW.Applications.ROD2.Common/YW.Applications.ROD2.Common.DLL
LOG: Attempting download of new URL file:///C:/WINNT/system32/YW.Applications.ROD2.Common.EXE
LOG: Attempting download of new URL file:///C:/WINNT/system32/YW.Applications.ROD2.Common/YW.Applications.ROD2.Common.EXE
LOG: Attempting download of new URL file:///C:/Program Files/COMPlus Applications/{AE505A3F-A951-4C70-898B-9A4FA9449AB6}/YW.Applications.ROD2.Common.DLL
LOG: Attempting download of new URL file:///C:/Program Files/COMPlus Applications/{AE505A3F-A951-4C70-898B-9A4FA9449AB6}/YW.Applications.ROD2.Common/YW.Applications.ROD2.Common.DLL
LOG: Attempting download of new URL file:///C:/Program Files/COMPlus Applications/{AE505A3F-A951-4C70-898B-9A4FA9449AB6}/YW.Applications.ROD2.Common.EXE
LOG: Attempting download of new URL file:///C:/Program Files/COMPlus Applications/{AE505A3F-A951-4C70-898B-9A4FA9449AB6}/YW.Applications.ROD2.Common/YW.Applications.ROD2.Common.EXE
Second Error
Product: UserService (Application Proxy) -- Error 1928. Error registering COM+ Application. Contact your support personnel for more information
"Ying-Shen Yu[MSFT]" - 22 Apr 2004 12:16 GMT
Hi,
It seems like there is an assembly binding failure in the installation
process.
Did you use some types from some other assemblies in the exported types of
your COM+ proxy assembly?
You may also check the fusion log to get more information.
Thanks!
Best regards,
Ying-Shen Yu [MSFT]
Microsoft Community Support
Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties and confers no rights.
This mail should not be replied directly, please remove the word "online"
before sending mail.
el_sid - 23 Apr 2004 10:11 GMT
Not to sure about what you mean. The assembly that it is complaining about is referenced by our COM+ component and is installed on the server in the same directory as the component. The problem is that this error only occurs with the 1.5 version of COM+, not with the 1.0.
"Ying-Shen Yu[MSFT]" - 23 Apr 2004 12:05 GMT
I mean if there is any types from the "Common" assembly was used in the
exported Types of your ServicedComponent assembly.
In the result of Assembly.GetExportedTypes(), is there any types which
derives or implements a type defined in the "Common" assembly?
If so, you may try adding the Common assembly into the GAC of client
machine.
Best regards,
Ying-Shen Yu [MSFT]
Microsoft Community Support
Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties and confers no rights.
This mail should not be replied directly, please remove the word "online"
before sending mail.
el_sid - 23 Apr 2004 12:36 GMT
Thanks that worked. Could you please give an explanation why we need to do this with version 1.5 of COM+ and not 1.0. It seems strange that this is a requirement and I would have only have thought that this would be necessary on the server since that it where the component gets run from.
"Ying-Shen Yu[MSFT]" - 27 Apr 2004 06:59 GMT
Hi,
I'm not sure why this problem is not occurred in COM+ 1.0 proxy setup
package, but it's probably because the 1.0 format will not add the proxy
assembly into GAC( The exception seems like thrown in the process of
loading the proxy assembly when adding to GAC).
If the problem could resolved by register the "Common" assembly into the
GAC of client machine.
I suspect this problem was caused by the assembly binding failure, when
loading the proxy assembly and get the exported types, CLR needs retrieving
the base type of every export type, in my test if the type was derived
from/implemented a type defined in another assembly, CLR needs loading that
assembly as well to get the meta data of the base type.
So if you need to make clear what types depends on the "Common" assembly,
you should check the result of Assembly.GetExportedTypes first.
Thanks!
Best regards,
Ying-Shen Yu [MSFT]
Microsoft Community Support
Get Secure! - www.microsoft.com/security
This posting is provided "AS IS" with no warranties and confers no rights.
This mail should not be replied directly, please remove the word "online"
before sending mail.