Ulike Interop referanser på to forskjellige datamaskiner fungerer ikke

stemmer
11

Når jeg legger til en referanse til Microsoft.Office.Interop.Excel på datamaskinen min, legger Visual Studio dette prosjektet filen:

<COMReference Include=Excel>
  <Guid>{00020813-0000-0000-C000-000000000046}</Guid>
  <VersionMajor>1</VersionMajor>
  <VersionMinor>5</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>primary</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>

Det er en annen utbygger på laget som får feil og trenger å legge til en DLL-fil til prosjektet kalt Interop.Excel.dll, som erstatter koden ovenfor med dette i prosjektfilen:

<Reference Include=Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL>
  <SpecificVersion>False</SpecificVersion>
  <HintPath>My Project\Interop.Excel.dll</HintPath>
</Reference>

Dette fungerer på min datamaskin.

Kan du vennligst forklare forskjellene mellom de to metodene som er best, og hvordan du får det første arbeider på andre datamaskiner?

Publisert på 21/10/2008 klokken 23:41
kilden bruker
På andre språk...                            


3 svar

stemmer
0

Jeg har brukt Excel automatisering måten mer enn jeg ønsker å admitt, og jeg har aldri referert Interop.Excel.dll. Jeg har alltid referert tidligere. Hvorfor er han refererer det, og hvilke feil får han?

Er dere refererer samme versjon av Excel (5,0 vers 11,0)? Har dere har nøyaktig samme versjon av Office, service pakcs og alt? Dette kan være Norg.

Svarte 21/10/2008 kl. 23:55
kilden bruker

stemmer
12

Jeg ser ikke noe problem med din tilnærming heller.

Typisk VS vil generere et interoperabilitet sammenstilling for COM komponenter automatisk når man legger til en referanse til komponenten. Men når du legger til en referanse til ett av Office-komponenter (XP eller nyere versjon) er en referanse til pregenerated (og optimalisert) primære interoperabilitetsenheten fra Microsoft tilsatt som i første eksempel. Køen

<WrapperTool>primary</WrapperTool>

betyr at denne PIA er brukt.

Hvis du lagt PIA referere CopyLocal eiendom av denne referansen bør settes til false og bane eiendommen skal være noe sånt

C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Excel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll

Du vil finne noen flere detaljer om interoperabilitets forsamlinger i denne MSDN artikkelen .

For å få den første metoden arbeider er det nødvendig at Riks Primary Interop Assemblies (PIAer) er installert på maskinen. Det er en redistributable versjon tilgjengelig fra Microsoft:

AFAIK, bare disse PIAer får installert av Office oppsettet når .NET Framework allerede er installert, det er derfor det er en egen redistributable for PIAer.

Merk: Pass på at du refererer den versjonen av Office du er målgruppe. Når rettet mot flere versjoner av Office, kan du få noen problemer likevel. En løsning i dette tilfellet kan være sen binding (hvis ytelsen ikke er et problem).

Svarte 25/11/2008 kl. 10:01
kilden bruker

stemmer
0

Jeg fant den reneste måten å bruke det, er dette også gir mulighet for flere versjoner av Interop, er å skape en felles bin \ Office Interop \ 11 eller 12 \ Microsoft.Office.Interop.Excel.dll \ og refeferenced dem fra prosjektet, fungerer en godbit for annen versjon

Svarte 25/11/2008 kl. 10:16
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more