Question

Je compile de csc.exe (bien, CruiseControl est ...), et je dois faire référence à une DLL dans le GAC. Je n'ai pas la version correcte de cette DLL comme un simple fichier, mais il y a une version correcte dans le GAC.

Cependant, vous ne pouvez pas faire référence à des assemblées dans le GAC avec csc -., Vous devez avoir le chemin vers le fichier réel

J'ai trouvé quelques références qui prétendent vous pouvez désosser le chemin vers le fichier réel, mais je ne l'ai pas été en mesure de les faire travailler. Je tirai la journalisation de Fusion, et je peux voir où l'exécution devient le fichier, mais en utilisant un filepath à cet endroit dans ma référence ne fonctionne pas.

Alors, comment trouvez-vous fournir une référence csc à une version de montage qui existe seulement dans le GAC?

Était-ce utile?

La solution

J'ai eu un problème similaire. La solution j'était d'ouvrir une invite de commande et changer le répertoire à quelque chose comme ce qui suit (changer en fonction de l'assemblage que vous voulez):

C:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions\3.5.0.0__31bf3856ad364e35\

Vous pouvez ensuite copier la DLL dans ce répertoire quelque part en dehors du GAC.

Autres conseils

Je vous recommande d'utiliser ou de Nant MSBuild et juste utiliser le fichier .csproj généré par Visual Studio. Ensuite, il suffit d'utiliser CruiseControl obtenir votre script Nant. Ci-dessous un extrait d'un script écrit Nant I,

<csc target="library" output="${basedir}/bin/${basename}.dll" debug="${debug}" optimize="true">
  <sources>
    <include name="src/app/**/*.cs"/>
  </sources>
  <references refid="My.Assemblies" />
</csc>

et les références

      <assemblyfileset id="My.Assemblies"><include name="System.dll"></include>
    <include name="System.Configuration.dll"></include>
    <include name="System.Core.dll"></include>
    <include name="System.Data.dll"></include>
    <include name="System.Data.DataSetExtensions.dll"></include>
    <include name="System.Drawing.dll"></include>
    <include name="System.EnterpriseServices.dll"></include>
    <include name="System.Web.dll"></include>
    <include name="System.Web.Extensions.dll"></include>
    <include name="System.Web.Mobile.dll"></include>
    <include name="System.Web.Services.dll"></include>
    <include name="System.Xml.dll"></include>
    <include name="System.Linq.dll"></include>
</assemblyfileset>

Quand je compilé Excel PIA, j'ai utilisé cette voie pour indiquer une référence sur la ligne de commande pour csc.exe: C: \ windows \ assembly \ GAC \ Microsoft.Office.Interop.Excel \ 11.0.0.0__71e9bce111e9429c \ Microsoft.Office.Interop.Excel.dll

La compilation a réussi.

?? Est-ce fonctionne pas pour vous?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top