Pregunta

Estoy compilando desde csc.exe (bueno, CruiseControl es...) y necesito hacer referencia a una DLL en el GAC.No tengo la versión correcta de esta DLL como un archivo simple, pero hay una versión correcta en el GAC.

Sin embargo, no puede hacer referencia a ensamblados en el GAC con csc; debe tener la ruta al archivo real.

Encontré algunas referencias que afirman que se puede realizar ingeniería inversa en la ruta al archivo real, pero no he podido hacer que funcionen.Encendí el registro de Fusion y puedo ver de dónde obtiene el archivo el tiempo de ejecución, pero usar una ruta de archivo a esa ubicación en mi referencia no funciona.

Entonces, ¿cómo se le proporciona a csc una referencia a una versión ensamblada que solo existe en el GAC?

¿Fue útil?

Solución

He tenido un problema similar. La solución que utilicé fue para abrir un símbolo del sistema y cambie el directorio a algo como lo siguiente (cambiarlo en función de la asamblea que desee):

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

A continuación, puede copiar el archivo DLL en este directorio en algún lugar fuera de la GAC.

Otros consejos

Me gustaría recomendar el uso Nant o MSBuild y sólo tiene que utilizar el archivo .csproj generado por Visual Studio. Después, simplemente llegar climatizador de usar el script de Nant. A continuación se muestra un extracto de un guión que escribí Nant,

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

y las referencias

      <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>

Cuando se compila contra el Excel de PIA, he utilizado esta vía para especificar una referencia en la línea de comandos para csc.exe: C: \ Windows \ assembly \ GAC \ Microsoft.Office.Interop.Excel \ 11.0.0.0__71e9bce111e9429c \ Microsoft.Office.Interop.Excel.dll

La compilación tuvo éxito.

?? ¿Esto no funciona para usted?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top