Eh, that wasn't the answer I was hoping for; I was hoping it would be a straight 1:1 conversion from our .vdproj project over to our .wixproj. Currently the .vdproj defines the reference like this:
"AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:TRUE" "AssemblyAsmDisplayName" = "8:Microsoft.ReportViewer.ProcessingObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" "ScatterAssemblies" { "_757E3A9FF837C1D92380AD581B054907" { "Name" = "8:Microsoft.ReportViewer.ProcessingObjectModel.dll" "Attributes" = "3:512" } } "SourcePath" = "8:Microsoft.ReportViewer.ProcessingObjectModel.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_C60F11269B2A4BD9B554C5B92230BB59" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" "ReadOnly" = "11:FALSE" "Hidden" = "11:FALSE" "System" = "11:FALSE" "Permanent" = "11:FALSE" "SharedLegacy" = "11:FALSE" "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" "IsDependency" = "11:TRUE" "IsolateTo" = "8:" I'm assuming it's querying the assmebly cache, then, in visual studio to resolve the references. It's pretty simple to query the Assembly Cache using Fusion.dll API calls. I just wrote an app in about 30 minutes to do just that using the following calls: <DllImport("fusion.dll")> _ Friend Shared Function CreateAssemblyEnum(ByRef ppEnum As IAssemblyEnum, ByVal pUnkReserved As IntPtr, ByVal pName As IAssemblyName, ByVal flags As AssemblyCacheFlags, ByVal pvReserved As IntPtr) As Integer End Function <DllImport("fusion.dll")> _ Friend Shared Function CreateAssemblyNameObject(ByRef ppAssemblyNameObj As IAssemblyName, <MarshalAs(UnmanagedType.LPWStr)> ByVal szAssemblyName As String, ByVal flags As CreateAssemblyNameObjectFlags, ByVal pvReserved As IntPtr) As Integer End Function <DllImport("fusion.dll")> _ Friend Shared Function CreateAssemblyCache(ByRef ppAsmCache As IAssemblyCache, ByVal reserved As Integer) As Integer End Function <ComImport(), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("e707dcde-d1cd-11d2-bab9-00c04f8eceae")> _ Friend Interface IAssemblyCache 'PreserveSig() Indicates that the HRESULT or retval signature transformation that takes place during COM interop calls should be suppressed <PreserveSig()> _ Function UninstallAssembly(ByVal flags As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal assemblyName As String, ByVal refData As InstallReference, ByRef disposition As AssemblyCacheUninstallDisposition) As Integer <PreserveSig()> _ Function QueryAssemblyInfo(ByVal flags As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal assemblyName As String, ByRef assemblyInfo As AssemblyInfo) As Integer <PreserveSig()> _ Function Reserved(ByVal flags As Integer, ByVal pvReserved As IntPtr, ByRef ppAsmItem As [Object], <MarshalAs(UnmanagedType.LPWStr)> ByVal assemblyName As String) As Integer <PreserveSig()> _ Function Reserved(ByRef ppAsmScavenger As [Object]) As Integer <PreserveSig()> _ Function InstallAssembly(ByVal flags As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal assemblyFilePath As String, ByVal refData As InstallReference) As Integer End Interface Any chance this could be included in a future release? To our company, this proves to be a major issue currently in converting from our .vbproj to .wixproj for MSM building. Thanks, Doug -----Original Message----- From: David Watson [mailto:dwat...@sdl.com] Sent: Thursday, April 07, 2011 10:09 AM To: wix-users@lists.sourceforge.net Subject: Re: [WiX-users] Building with a .dll from GAC Hi, The best way of doing this is exactly what you think is a bad idea. Store this dll in a well know location or source control and refer to it as part of your build process. The Gac is actually a more complex structure than it appears in the simplified windows explorer view. You can investigate it from a command prompt if you feel the need. For example I have a version of the dll in "c:\Windows\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel\10 .0.0.0__b03f5f7f11d50a3a" I would of course check the legality of shipping this dll in your setup as it may not be allowed as microsoft have a redist for it. You may need to bundle this as a pre-requisite. 2010 version. http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a941c6b2-64dd-4d0 3-9ca7-4017a0d164fd Dave -----Original Message----- From: Brinkmeier, Doug [mailto:doug.brinkme...@countryfinancial.com] Sent: 07 April 2011 15:43 To: wix-users@lists.sourceforge.net Subject: [WiX-users] Building with a .dll from GAC I've been doing some research, and seeing a lot of posts about installing a .dll to the GAC, but (at least to me) it seems like the much more common scenario is just simply using a known .dll/assembly name installed in the GAC in the build (just to deploy to the install directory). I won't know exact location of the .dll, because this will be built on different machines, and the exact location of the .dll will not be known. But, we can assume it is installed in the GAC only. I've tried a number of different things, and nothing has worked yet. Here is the component: <Component Id="MICROSOFT.REPORTVIEWER.PROCESSINGOBJECTMODEL.DLL" DiskId="1" Guid="939B1998-7A72-4D45-8269-9DEB5F1C6405"> <File Id="MICROSOFT.REPORTVIEWER.PROCESSINGOBJECTMODEL.DLL" KeyPath="yes" Name="Microsoft.ReportViewer.ProcessingObjectModel" Source="$(env.WINDIR)\assembly\Microsoft.ReportViewer.ProcessingObjectModel.d ll" /> </Component> I've also tried: Source="Microsoft.ReportViewer.ProcessingObjectModel.dll" This particular .dll is not installed on the hard drive anywhere, and only exists in the GAC. I could hack around the issue by dropping it out to a known location, but that's not very clean; I assume there should be a pretty easy way to reference a .dll in the GAC, but I'm just not finding any documentation on it. Thanks, Doug ----------------------------------------------------------------------------- - Xperia(TM) PLAY It's a major breakthrough. An authentic gaming smartphone on the nation's most reliable network. And it wants your games. http://p.sf.net/sfu/verizon-sfdev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users SDL PLC confidential, all rights reserved. If you are not the intended recipient of this mail SDL requests and requires that you delete it without acting upon or copying any of its contents, and we further request that you advise us. SDL PLC is a public limited company registered in England and Wales. Registered number: 02675207. Registered address: Globe House, Clivemont Road, Maidenhead, Berkshire SL6 7DY, UK. ------------------------------------------------------------------------------ Xperia(TM) PLAY It's a major breakthrough. An authentic gaming smartphone on the nation's most reliable network. And it wants your games. http://p.sf.net/sfu/verizon-sfdev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Xperia(TM) PLAY It's a major breakthrough. An authentic gaming smartphone on the nation's most reliable network. And it wants your games. http://p.sf.net/sfu/verizon-sfdev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users