Mostrando entradas con la etiqueta GAC. Mostrar todas las entradas
Mostrando entradas con la etiqueta GAC. Mostrar todas las entradas

Desinstalar assembly del GAC de .NET


Ejemplo:

Desinstalar la LibX de la carpeta GAC de .NET:



gacutil /u "LibX,Version=3.0.0.0, Culture=neutral, PublicKeyToken=2ebfdc71997c1f40"

la version a especificar en el gacutil es

        v4.0_3.0.0.0__2ebfdc71997c1f40

y el token:

        v4.0_3.0.0.0__2ebfdc71997c1f40

Post build event para instalar dll en GAC sin modificar el fuente

Para poder publicar una DLL en el GAC, es necesario que esté firmada.
Adicionalmente, para poderla utilizar en fuentes cuyo framework es 4.5.1, es necesario recompilarla en dicha versión.

Dado que no es posible firmar la LibX.dll ni actualizar su framework (porque si se hace habría que recompilar todos los fuentes que la utilicen), se definió un post-build event, que realiza las siguientes acciones:

1. Compilar la librería en la versión framework 4.5.1 (dejando la .dll resultante en una carpeta auxiliar)
2. Firmar la .dll con la clave disponible para dicha librería (el archivo keyLibX.snk en este caso)
3. Instalar la .dll firmada en el GAC, mediante gacutil


Este es el código del post-build event:


call "$(DevEnvDir)..\Tools\vsvars32.bat"

IF NOT EXIST c:\temp\$(TargetName)\OutDir mkdir C:\temp\$(TargetName)\OutDir

IF NOT EXIST c:\temp\$(TargetName)\Signed mkdir C:\temp\$(TargetName)\Signed

IF NOT EXIST $(TargetDir)\Signed mkdir $(TargetDir)\Signed

msbuild.exe $(ProjectPath) /p:TargetFrameworkVersion=v4.5.1;Configuration=Release /tv:4.0 /t:Rebuild /p:OutDir=c:\temp\$(TargetName)\Outdir /p:PreBuildEvent= /p:PostBuildEvent=

ildasm.exe $(TargetPath) /out:$(TargetDir)\Signed\$(TargetName).il

ilasm.exe $(TargetDir)\Signed\$(TargetName).il /dll /key=$(ProjectDir)\keyLibX.snk /output=$(TargetDir)\Signed\$(TargetName).dll

gacutil.exe /i $(TargetDir)\Signed\$(TargetName).dll /f


El objetivo de este post-build event, es lograr que una .dll que no esté firmada y en una versión anterior de framework, llegue al GAC con la versión 4.5.1 de framework, sin modificar el fuente del proyecto para no afectar a los otros desarrollos que la utilizan.



Referencias a dll de assembly en vistas de razor

Si se quiere utilizar una dll del GAC desde una vista razor, es necesario agregarlo como referencia en el Web.config que está dentro de la carpeta Views.

Por ejemplo, si se utiliza en una vista lo siguiente:

@using Sistema.Configuracion.Util

Es necesario agregar en el web.config que está dentro de  Views, lo siguiente:

  <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="Sistema.Configuracion.Util" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>


<system.web>
    ...
    ...
    <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
                <add assembly="Sistema.Configuracion.Util, Version=1.0.0.0, Culture=neutral, PublicKeyToken=62a692e0bdb17eee" />
      </assemblies>
    </compilation>
    ...
    ...
</system.web>


RECORDAR DEJAR EN FALSE LA PROPIEDAD COPY LOCAL DE LA REFERENCIA (EN REFERENCES)

Instalar remotamente en assembly de otro equipo

Utilizar psexec:

copy dll1.dll \\Xdesa\temp

psexec \\nombre-del-servidor "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\gacutil" /i c:\temp\dll1.dll /f


Instalar dll en GAC automaticamente luego de hacer build en Visual Studio

http://abhijitjana.net/2011/08/25/install-a-shared-assembly-to-the-gac-as-post-build-event-from-visual-studio/

En las propiedades del proyecto, en Build Events, agregar en Post-build event command line:

call "$(DevEnvDir)..\Tools\vsvars32.bat"
"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe" /i "$(TargetPath)" /f

Recordar que las dlls deben estar firmadas para poder ser publicadas en GAC

Si el gacutil no esta disponible, hay que instalar los SDK 8.1 de Windows: