![]() | |
![]() |
| | Thread Tools | Search this Thread | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I'm writing a C# app which will populate an Excel spreadsheet. The app references Excel using COM. I have Office 2007 on my machine, but the machine which will be running the application will have Office 2003. Therefore, when I added the Excel COM reference, I chose the Excel 11 one. Now that I'm trying the application on another machine I'm getting errors saying that the Microsoft.Office.Interop.Excel version 12.0.0.0 is missing. Viewing the object browser I see that Microsoft.Office.Interop.Excel is described as: Assembly Microsoft.Office.Interop.Excel C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll This is strange condisering in the Solution Explorer view, I see the properties for the Excel Reference set to: Microsoft.Office.Interop.Excel Microsoft Excel 11.0 Object Library C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll It's saying it's Excel 11, but then references the Excel 12 interop libraries. I've removed the reference and added it again and it's still the same. Any suggestions as to how I fix this? I need to keep Office 2007 on this machine, but need to be able to build for Excel 2003. Thanks David |
#3
| |||
| |||
|
|
I had the same issue. After some research and testing, I discovered that one cannot develop a .Net application for Excel on a development machine that has Office 2007 and have this application work on a computer that has Office 2003. However, your development machine can have Office 2003 and your application will work on machines with Office 2003 or Office 2007. Consequently, I had to go back to a development machine with Office 2003. CAUTION: as you will see in my post that follows this message, when I uninstalled Office 2007 from my development machine and installed office 2003, I had big problems getting the application .exe to work. I'm still trying to resolve this. Bill "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:%23ovnw7KjHHA.588 (AT) TK2MSFTNGP06 (DOT) phx.gbl... I'm writing a C# app which will populate an Excel spreadsheet. The app references Excel using COM. I have Office 2007 on my machine, but the machine which will be running the application will have Office 2003. Therefore, when I added the Excel COM reference, I chose the Excel 11 one. Now that I'm trying the application on another machine I'm getting errors saying that the Microsoft.Office.Interop.Excel version 12.0.0.0 is missing. Viewing the object browser I see that Microsoft.Office.Interop.Excel is described as: Assembly Microsoft.Office.Interop.Excel C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll This is strange condisering in the Solution Explorer view, I see the properties for the Excel Reference set to: Microsoft.Office.Interop.Excel Microsoft Excel 11.0 Object Library C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll It's saying it's Excel 11, but then references the Excel 12 interop libraries. I've removed the reference and added it again and it's still the same. Any suggestions as to how I fix this? I need to keep Office 2007 on this machine, but need to be able to build for Excel 2003. Thanks David |
#4
| |||
| |||
|
|
From what I've been able to deduce, Office 2007 has redirects from Office 11 PIAs to Office 12 PIAs because they 12/2007 ones are backward compatible to 11/2003. This means that whenever I add a reference to the Office 2003 Interop, I actually (without warning) get redirected to the Office 2007 Iterop files. This causes a problem as when you build it, it references the Office 2007 ones, and deploying onto a Office 2003 machine - it doesn't have the Office 2007 ones. Everything would be fine if my dev machine was Office 2003 and the depoyment machines were 2003 or 2007. The solution it seems is in your app.config file redirect the request for v12 ones to v11. ?xml version="1.0" encoding="utf-8" ? configuration runtime assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" dependentAssembly assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71e9bce111e9429c" culture="neutral" / publisherPolicy apply="yes" / bindingRedirect oldVersion="12.0.0.0" newVersion="11.0.0.0"/ /dependentAssembly /assemblyBinding /runtime /configuration It's working for me with that as the main app.config file. The actual app doesn't use the Excel part, but a DLL it references does, and it seems that it's only the main app which needs this, not the DLL. I'm also not sure whether this is a recommended way of doing it - but as I said, works for me. Hope that helps you. David Bill F wrote: I had the same issue. After some research and testing, I discovered that one cannot develop a .Net application for Excel on a development machine that has Office 2007 and have this application work on a computer that has Office 2003. However, your development machine can have Office 2003 and your application will work on machines with Office 2003 or Office 2007. Consequently, I had to go back to a development machine with Office 2003. CAUTION: as you will see in my post that follows this message, when I uninstalled Office 2007 from my development machine and installed office 2003, I had big problems getting the application .exe to work. I'm still trying to resolve this. Bill "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:%23ovnw7KjHHA.588 (AT) TK2MSFTNGP06 (DOT) phx.gbl... I'm writing a C# app which will populate an Excel spreadsheet. The app references Excel using COM. I have Office 2007 on my machine, but the machine which will be running the application will have Office 2003. Therefore, when I added the Excel COM reference, I chose the Excel 11 one. Now that I'm trying the application on another machine I'm getting errors saying that the Microsoft.Office.Interop.Excel version 12.0.0.0 is missing. Viewing the object browser I see that Microsoft.Office.Interop.Excel is described as: Assembly Microsoft.Office.Interop.Excel C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll This is strange condisering in the Solution Explorer view, I see the properties for the Excel Reference set to: Microsoft.Office.Interop.Excel Microsoft Excel 11.0 Object Library C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll It's saying it's Excel 11, but then references the Excel 12 interop libraries. I've removed the reference and added it again and it's still the same. Any suggestions as to how I fix this? I need to keep Office 2007 on this machine, but need to be able to build for Excel 2003. Thanks David |
#5
| |||
| |||
|
#6
| |||
| |||
|
|
Hi David, Looks like you've installed Office 2007's PIA (Primary Interop Assembly). In VS2005, when you add a COM reference, it will try to check first if there's any PIA registered for that COM component, if found, it will use that PIA from GAC. Please uninstall Office 2007's PIA and install Office 2003 PIA from here: http://www.microsoft.com/downloads/d...83a-ac14-4125- 8ba0-d36d67e0f4ad&displaylang=en For more information about PIA: http://msdn2.microsoft.com/en-us/library/aa302338.aspx Hope this helps. Sincerely, Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.') Microsoft Online Community Support ================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscripti...ult.aspx#notif ications. If you are using Outlook Express, please make sure you clear the check box "Tools/Options/Read: Get 300 headers at a time" to see your reply promptly. Note: The MSDN Managed Newsgroup support offering is for non-urgent issues where an initial response from the community or a Microsoft Support Engineer within 1 business day is acceptable. Please note that each follow up response may take approximately 2 business days as the support professional working with you may need further investigation to reach the most efficient resolution. The offering is not appropriate for situations that require urgent, real-time or phone-based interactions or complex project analysis and dump analysis issues. Issues of this nature are best handled working with a dedicated Microsoft Support Engineer by contacting Microsoft Customer Support Services (CSS) at http://msdn.microsoft.com/subscripti...t/default.aspx. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights. |
#7
| |||
| |||
|
|
David: So, let me see if I got this right. You build your application on a machine with Office 2007 installed. When you deploy the application to a machine with Office 2003, you include the app.config file you desribed below. When you deploy your application to a machine with Office 2007, you don't include the app.config because the redirect is not needed. Is this correct? Getting Closer Bill (maybe) "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:uSFDS9MjHHA.4596 (AT) TK2MSFTNGP05 (DOT) phx.gbl... From what I've been able to deduce, Office 2007 has redirects from Office 11 PIAs to Office 12 PIAs because they 12/2007 ones are backward compatible to 11/2003. This means that whenever I add a reference to the Office 2003 Interop, I actually (without warning) get redirected to the Office 2007 Iterop files. This causes a problem as when you build it, it references the Office 2007 ones, and deploying onto a Office 2003 machine - it doesn't have the Office 2007 ones. Everything would be fine if my dev machine was Office 2003 and the depoyment machines were 2003 or 2007. The solution it seems is in your app.config file redirect the request for v12 ones to v11. ?xml version="1.0" encoding="utf-8" ? configuration runtime assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" dependentAssembly assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71e9bce111e9429c" culture="neutral" / publisherPolicy apply="yes" / bindingRedirect oldVersion="12.0.0.0" newVersion="11.0.0.0"/ /dependentAssembly /assemblyBinding /runtime /configuration It's working for me with that as the main app.config file. The actual app doesn't use the Excel part, but a DLL it references does, and it seems that it's only the main app which needs this, not the DLL. I'm also not sure whether this is a recommended way of doing it - but as I said, works for me. Hope that helps you. David Bill F wrote: I had the same issue. After some research and testing, I discovered that one cannot develop a .Net application for Excel on a development machine that has Office 2007 and have this application work on a computer that has Office 2003. However, your development machine can have Office 2003 and your application will work on machines with Office 2003 or Office 2007. Consequently, I had to go back to a development machine with Office 2003. CAUTION: as you will see in my post that follows this message, when I uninstalled Office 2007 from my development machine and installed office 2003, I had big problems getting the application .exe to work. I'm still trying to resolve this. Bill "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:%23ovnw7KjHHA.588 (AT) TK2MSFTNGP06 (DOT) phx.gbl... I'm writing a C# app which will populate an Excel spreadsheet. The app references Excel using COM. I have Office 2007 on my machine, but the machine which will be running the application will have Office 2003. Therefore, when I added the Excel COM reference, I chose the Excel 11 one. Now that I'm trying the application on another machine I'm getting errors saying that the Microsoft.Office.Interop.Excel version 12.0.0.0 is missing. Viewing the object browser I see that Microsoft.Office.Interop.Excel is described as: Assembly Microsoft.Office.Interop.Excel C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll This is strange condisering in the Solution Explorer view, I see the properties for the Excel Reference set to: Microsoft.Office.Interop.Excel Microsoft Excel 11.0 Object Library C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll It's saying it's Excel 11, but then references the Excel 12 interop libraries. I've removed the reference and added it again and it's still the same. Any suggestions as to how I fix this? I need to keep Office 2007 on this machine, but need to be able to build for Excel 2003. Thanks David |
#8
| |||
| |||
|
|
Hi David, Looks like you've installed Office 2007's PIA (Primary Interop Assembly). In VS2005, when you add a COM reference, it will try to check first if there's any PIA registered for that COM component, if found, it will use that PIA from GAC. Please uninstall Office 2007's PIA and install Office 2003 PIA from here: http://www.microsoft.com/downloads/d...83a-ac14-4125- 8ba0-d36d67e0f4ad&displaylang=en For more information about PIA: http://msdn2.microsoft.com/en-us/library/aa302338.aspx Hope this helps. Sincerely, Walter Wang (wawang (AT) online (DOT) microsoft.com, remove 'online.') Microsoft Online Community Support ================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscripti...ult.aspx#notif ications. If you are using Outlook Express, please make sure you clear the check box "Tools/Options/Read: Get 300 headers at a time" to see your reply promptly. Note: The MSDN Managed Newsgroup support offering is for non-urgent issues where an initial response from the community or a Microsoft Support Engineer within 1 business day is acceptable. Please note that each follow up response may take approximately 2 business days as the support professional working with you may need further investigation to reach the most efficient resolution. The offering is not appropriate for situations that require urgent, real-time or phone-based interactions or complex project analysis and dump analysis issues. Issues of this nature are best handled working with a dedicated Microsoft Support Engineer by contacting Microsoft Customer Support Services (CSS) at http://msdn.microsoft.com/subscripti...t/default.aspx. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights. |
#9
| |||
| |||
|
|
Correct, that's what I've done. When I try it on my dev machine (with the app.config and Office 2007 and Excel 2003 present) it works in just the same way it seems - so I'm not 100% sure if you need to worry about not deploying it to Office 2007 machines. In my source folder and project I have an app.config file, when I build it, it creates a <executablename.exe>.config file in the bin\Release and bin\Debug folders containing the same information. It's that file (not the one called app.config) that I'm deploying. Hope that helps, David Bill F wrote: David: So, let me see if I got this right. You build your application on a machine with Office 2007 installed. When you deploy the application to a machine with Office 2003, you include the app.config file you desribed below. When you deploy your application to a machine with Office 2007, you don't include the app.config because the redirect is not needed. Is this correct? Getting Closer Bill (maybe) "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:uSFDS9MjHHA.4596 (AT) TK2MSFTNGP05 (DOT) phx.gbl... From what I've been able to deduce, Office 2007 has redirects from Office 11 PIAs to Office 12 PIAs because they 12/2007 ones are backward compatible to 11/2003. This means that whenever I add a reference to the Office 2003 Interop, I actually (without warning) get redirected to the Office 2007 Iterop files. This causes a problem as when you build it, it references the Office 2007 ones, and deploying onto a Office 2003 machine - it doesn't have the Office 2007 ones. Everything would be fine if my dev machine was Office 2003 and the depoyment machines were 2003 or 2007. The solution it seems is in your app.config file redirect the request for v12 ones to v11. ?xml version="1.0" encoding="utf-8" ? configuration runtime assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" dependentAssembly assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71e9bce111e9429c" culture="neutral" / publisherPolicy apply="yes" / bindingRedirect oldVersion="12.0.0.0" newVersion="11.0.0.0"/ /dependentAssembly /assemblyBinding /runtime /configuration It's working for me with that as the main app.config file. The actual app doesn't use the Excel part, but a DLL it references does, and it seems that it's only the main app which needs this, not the DLL. I'm also not sure whether this is a recommended way of doing it - but as I said, works for me. Hope that helps you. David Bill F wrote: I had the same issue. After some research and testing, I discovered that one cannot develop a .Net application for Excel on a development machine that has Office 2007 and have this application work on a computer that has Office 2003. However, your development machine can have Office 2003 and your application will work on machines with Office 2003 or Office 2007. Consequently, I had to go back to a development machine with Office 2003. CAUTION: as you will see in my post that follows this message, when I uninstalled Office 2007 from my development machine and installed office 2003, I had big problems getting the application .exe to work. I'm still trying to resolve this. Bill "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:%23ovnw7KjHHA.588 (AT) TK2MSFTNGP06 (DOT) phx.gbl... I'm writing a C# app which will populate an Excel spreadsheet. The app references Excel using COM. I have Office 2007 on my machine, but the machine which will be running the application will have Office 2003. Therefore, when I added the Excel COM reference, I chose the Excel 11 one. Now that I'm trying the application on another machine I'm getting errors saying that the Microsoft.Office.Interop.Excel version 12.0.0.0 is missing. Viewing the object browser I see that Microsoft.Office.Interop.Excel is described as: Assembly Microsoft.Office.Interop.Excel C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll This is strange condisering in the Solution Explorer view, I see the properties for the Excel Reference set to: Microsoft.Office.Interop.Excel Microsoft Excel 11.0 Object Library C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll It's saying it's Excel 11, but then references the Excel 12 interop libraries. I've removed the reference and added it again and it's still the same. Any suggestions as to how I fix this? I need to keep Office 2007 on this machine, but need to be able to build for Excel 2003. Thanks David |
#10
| |||
| |||
|
|
Correct, that's what I've done. When I try it on my dev machine (with the app.config and Office 2007 and Excel 2003 present) it works in just the same way it seems - so I'm not 100% sure if you need to worry about not deploying it to Office 2007 machines. In my source folder and project I have an app.config file, when I build it, it creates a <executablename.exe>.config file in the bin\Release and bin\Debug folders containing the same information. It's that file (not the one called app.config) that I'm deploying. Hope that helps, David Bill F wrote: David: So, let me see if I got this right. You build your application on a machine with Office 2007 installed. When you deploy the application to a machine with Office 2003, you include the app.config file you desribed below. When you deploy your application to a machine with Office 2007, you don't include the app.config because the redirect is not needed. Is this correct? Getting Closer Bill (maybe) "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:uSFDS9MjHHA.4596 (AT) TK2MSFTNGP05 (DOT) phx.gbl... From what I've been able to deduce, Office 2007 has redirects from Office 11 PIAs to Office 12 PIAs because they 12/2007 ones are backward compatible to 11/2003. This means that whenever I add a reference to the Office 2003 Interop, I actually (without warning) get redirected to the Office 2007 Iterop files. This causes a problem as when you build it, it references the Office 2007 ones, and deploying onto a Office 2003 machine - it doesn't have the Office 2007 ones. Everything would be fine if my dev machine was Office 2003 and the depoyment machines were 2003 or 2007. The solution it seems is in your app.config file redirect the request for v12 ones to v11. ?xml version="1.0" encoding="utf-8" ? configuration runtime assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" dependentAssembly assemblyIdentity name="Microsoft.Office.Interop.Excel" publicKeyToken="71e9bce111e9429c" culture="neutral" / publisherPolicy apply="yes" / bindingRedirect oldVersion="12.0.0.0" newVersion="11.0.0.0"/ /dependentAssembly /assemblyBinding /runtime /configuration It's working for me with that as the main app.config file. The actual app doesn't use the Excel part, but a DLL it references does, and it seems that it's only the main app which needs this, not the DLL. I'm also not sure whether this is a recommended way of doing it - but as I said, works for me. Hope that helps you. David Bill F wrote: I had the same issue. After some research and testing, I discovered that one cannot develop a .Net application for Excel on a development machine that has Office 2007 and have this application work on a computer that has Office 2003. However, your development machine can have Office 2003 and your application will work on machines with Office 2003 or Office 2007. Consequently, I had to go back to a development machine with Office 2003. CAUTION: as you will see in my post that follows this message, when I uninstalled Office 2007 from my development machine and installed office 2003, I had big problems getting the application .exe to work. I'm still trying to resolve this. Bill "David Hearn" <david.hearn (AT) newsgroup (DOT) nospam> wrote in message news:%23ovnw7KjHHA.588 (AT) TK2MSFTNGP06 (DOT) phx.gbl... I'm writing a C# app which will populate an Excel spreadsheet. The app references Excel using COM. I have Office 2007 on my machine, but the machine which will be running the application will have Office 2003. Therefore, when I added the Excel COM reference, I chose the Excel 11 one. Now that I'm trying the application on another machine I'm getting errors saying that the Microsoft.Office.Interop.Excel version 12.0.0.0 is missing. Viewing the object browser I see that Microsoft.Office.Interop.Excel is described as: Assembly Microsoft.Office.Interop.Excel C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll This is strange condisering in the Solution Explorer view, I see the properties for the Excel Reference set to: Microsoft.Office.Interop.Excel Microsoft Excel 11.0 Object Library C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.E xcel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.I nterop.Excel.dll It's saying it's Excel 11, but then references the Excel 12 interop libraries. I've removed the reference and added it again and it's still the same. Any suggestions as to how I fix this? I need to keep Office 2007 on this machine, but need to be able to build for Excel 2003. Thanks David |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |