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.
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)
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
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
Si el gacutil no esta disponible, hay que instalar los SDK 8.1 de Windows:
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:
Suscribirse a:
Entradas (Atom)
