Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az alábbi beállítások szabályozzák a fordító bemeneteit. Az új MSBuild szintaxis félkövér formátumban jelenik meg. A régebbi csc.exe szintaxis látható a code style.
-
Hivatkozások /
-referencevagy-references: Hivatkozzon a megadott szerelvényfájlból vagy fájlokból származó metaadatokra. -
Modul hozzáadása /
-addmodule: Modul hozzáadása (a szerelvényheztarget:modulelétrehozva).) -
EmbedInteropTypes /
-link: Metaadatok beágyazása a megadott interop szerelvényfájlokból.
Hivatkozások
A Hivatkozások beállítás hatására a fordító a megadott fájlban lévő nyilvános típusú adatokat importálja az aktuális projektbe, így a megadott szerelvényfájlok metaadataira hivatkozhat.
<Reference Include="filename" />
filename a szerelvényjegyzéket tartalmazó fájl neve. Egynél több fájl importálásához minden fájlhoz adjon meg egy külön referenciaelemet . Az aliasokat a Referencia elem gyermekelemeként definiálhatja:
<Reference Include="filename.dll">
<Aliases>LS</Aliases>
</Reference>
Az előző példában az érvényes C# azonosító egy gyökérnévteret jelöl, LS amely a szerelvény filename.dllösszes névterét tartalmazza. Az importált fájloknak tartalmazniuk kell egy jegyzékfájlt. Az AdditionalLibPaths használatával megadhatja azt a könyvtárat, amelyben egy vagy több szerelvényhivatkozás található. Az AdditionalLibPaths témakör azokat a könyvtárakat is ismerteti, amelyekben a fordító szerelvényeket keres. Ahhoz, hogy a fordító felismerjen egy típust egy szerelvényben, és ne egy modulban, meg kell oldania a típust, amelyet a típus egy példányának definiálásával tehet meg. A fordító szerelvényében más módokon is fel lehet oldani a típusneveket: ha például egy szerelvény egy típusától örököl, akkor a fordító felismeri a típusnevet. Néha szükség van arra, hogy ugyanazon összetevő két különböző verziójára hivatkozzon egy szerelvényen belül. Ehhez használja az Aliasok elemet az egyes fájlok Hivatkozás elemén a két fájl megkülönböztetéséhez. Ez az alias lesz használva az összetevő nevének minősítőjeként, és feloldja az összetevőt az egyik fájlban.
Megjegyzés:
A Visual Studióban használja a Hivatkozás hozzáadása parancsot. További információ : Útmutató: Hivatkozások hozzáadása vagy eltávolítása a Referenciakezelő használatával.
Modulok hozzáadása
Ez a beállítás hozzáad egy modult, amelyet a <OutputType>module</OutputType> kapcsolóval hoztak létre az aktuális fordításhoz:
<AddModule Include=file1 />
<AddModule Include=file2 />
Hol filevannak file2 a metaadatokat tartalmazó kimeneti fájlok. A fájl nem tartalmazhat szerelvényjegyzéket. Több fájl importálásához különítse el a fájlneveket vesszővel vagy pontosvesszővel. Az AddModules szolgáltatással hozzáadott összes modulnak ugyanabban a könyvtárban kell lennie, mint a kimeneti fájl futásidejében. Ez azt is jelentheti, hogy fordításkor bármely könyvtárban megadhat egy modult, de a modulnak futásidőben az alkalmazáskönyvtárban kell lennie. Ha a modul futásidőben nem szerepel az alkalmazáskönyvtárban, egy TypeLoadException.
file nem tartalmazhat szerelvényt. Ha például a kimeneti fájl a modulOutputType beállításával lett létrehozva, a metaadatai az AddModules használatával importálhatók.
Ha a kimeneti fájl a modultól eltérő OutputType beállítással lett létrehozva, a metaadatai nem importálhatók az AddModules használatával, de a Hivatkozások beállítással importálhatók.
EmbedInteropTypes
Emiatt a fordító elérhetővé teszi a COM-típusadatokat a megadott szerelvényekben az éppen összeállított projekt számára.
<References>
<EmbedInteropTypes>file1;file2;file3</EmbedInteropTypes>
</References>
Hol file1;file2;file3 található a szerelvényfájlnevek pontosvesszővel tagolt listája. Ha a fájlnév szóközt tartalmaz, a nevet idézőjelek közé kell foglalnia. Az EmbedInteropTypes lehetőség lehetővé teszi egy beágyazott típusinformációval rendelkező alkalmazás üzembe helyezését. Az alkalmazás ezután olyan futtatókörnyezeti szerelvényben is használhat típusokat, amelyek a beágyazott típusinformációkat implementálják anélkül, hogy hivatkozni kellene a futtatókörnyezet-szerelvényre. Ha a futtatókörnyezet-szerelvény különböző verzióit közzéteszik, a beágyazott típusinformációkat tartalmazó alkalmazás újrafordítás nélkül együttműködhet a különböző verziókkal. Példa: Útmutató: Típusok beágyazása felügyelt szerelvényekből.
Az EmbedInteropTypes lehetőség használata különösen hasznos a COM-interop használata esetén. COM-típusokat ágyazhat be, így az alkalmazásnak már nincs szüksége elsődleges interop szerelvényre (PIA) a célszámítógépen. Az EmbedInteropTypes beállítás arra utasítja a fordítót, hogy ágyazza be a COM-típusadatokat a hivatkozott interop szerelvényből az eredményül kapott lefordított kódba. A COM-típust a CLSID (GUID) érték azonosítja. Ennek eredményeképpen az alkalmazás futtatható olyan célszámítógépen, amely ugyanazokat a COM-típusokat telepítette ugyanazokkal a CLSID-értékekkel. A Microsoft Office-t automatizáló alkalmazások jó példa erre. Mivel az Office-hoz hasonló alkalmazások általában ugyanazt a CLSID-értéket tartják meg különböző verziókban, az alkalmazás használhatja a hivatkozott COM-típusokat mindaddig, amíg a .NET-keretrendszer 4- vagy újabb verziója telepítve van a célszámítógépre, és az alkalmazás a hivatkozott COM-típusokban szereplő metódusokat, tulajdonságokat vagy eseményeket használja. Az EmbedInteropTypes beállítás csak illesztőket, struktúrákat és meghatalmazottakat ágyaz be. A COM-osztályok beágyazása nem támogatott.
Megjegyzés:
Ha beágyazott COM-típusú példányt hoz létre a kódban, a példányt a megfelelő felületen kell létrehoznia. Ha egy beágyazott COM-típuspéldányt próbál létrehozni a CoClass használatával, az hibát okoz.
A Hivatkozások fordítóhoz hasonlóan az EmbedInteropTypes fordítóprogram a Csc.rsp válaszfájlt használja, amely a gyakran használt .NET-szerelvényekre hivatkozik. Ha nem szeretné, hogy a fordító a Csc.rsp fájlt használja, használja a NoConfig fordítót.
// The following code causes an error if ISampleInterface is an embedded interop type.
ISampleInterface<SampleType> sample;
Az olyan általános paraméterrel rendelkező típusok, amelyek típusa egy interop szerelvényből van beágyazva, nem használhatók, ha ez a típus külső szerelvényből származik. Ez a korlátozás nem vonatkozik a felületekre. Vegyük például a Range szerelvényben Microsoft.Office.Interop.Excel definiált felületet. Ha egy kódtár beágyazza az illesztőtípusokat a Microsoft.Office.Interop.Excel szerelvényből, és olyan metódust tesz elérhetővé, amely egy olyan általános típust ad vissza, amelynek a típusa az Range interfész, a metódusnak egy általános felületet kell visszaadnia, ahogyan az a következő kódpéldában látható.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
public class Utility
{
// The following code causes an error when called by a client assembly.
public List<Range> GetRange1()
{
return null;
}
// The following code is valid for calls from a client assembly.
public IList<Range> GetRange2()
{
return null;
}
}
Az alábbi példában az ügyfélkód meghívhatja azt a metódust, amely hiba nélkül adja vissza az IList általános felületet.
public class Client
{
public void Main()
{
Utility util = new Utility();
// The following code causes an error.
List<Range> rangeList1 = util.GetRange1();
// The following code is valid.
List<Range> rangeList2 = (List<Range>)util.GetRange2();
}
}