Esto es para un proyecto de formularios de Windows en VS2010.error RG0000: No se pudo cargar el archivo o ensamblado 'xxx' o una de sus dependencias. Acceso denegado
Aquí es el mensaje que recibo de MSBuild:
error RG0000: Could not load file or assembly '3rdPartyAssemblyUsedByProject, Version=1.1.263.0, Culture=neutral, PublicKeyToken=687bce93d7ce902c' or one of its dependencies. Access is denied. Line 174 , position 5. [C:\xxx\src\BackOffice.csproj]
Aquí es la línea de comandos que se utiliza para poner esto adelante:
c:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/msbuild.exe BackOffice.csproj /p:PlatformTarget=x86
Línea 174 del resx que se atribuyó al error :
<data name="generalImages.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
...
</value>
</data>
generalImages es un control ImageList con imágenes usadas para botones en el formulario.
Esto funciona bien en mi máquina de desarrollo, pero es un problema en mi servidor de compilación. Mi estación de trabajo es Windows 7 de 64 bits, el servidor de compilación es Windows 2008 Server de 64 bits. El servidor de compilación tiene instalada Windows 7.1 sdk.
Si uso msbuild desde v3.5 framework, la compilación se completa con éxito. Obtengo este mensaje de advertencia que no me está causando ningún problema en este momento: El archivo de proyecto contiene ToolsVersion = "4.0", que no es compatible con esta versión de MSBuild. Tratando el proyecto como si tuviera ToolsVersion = "3.5".
El motivo principal de esto es apuntar realmente al marco de trabajo 4.0 y usar elementos como los valores predeterminados del método, que no funcionan cuando se apunta a 3.5.
He buscado y buscado en este. He encontrado muchos éxitos relacionados con problemas de 32 bits/64 bits, donde el formato de imagen es el problema, pero este no es mi problema. Este error dice "Acceso denegado". Utilicé fuslogvw para tratar de averiguar de dónde venía el acceso denegado, pero no veo que lo sea, pero en realidad no se encuentra ningún ensamblado. El ensamblaje no está en el GAC, sino en un directorio tangencial al archivo del proyecto donde se encuentra la referencia del archivo del proyecto.
Aquí está el registro de fusión:
* Assembly Binder Log Entry (8/30/2010 @ 1:44:48 PM) *
The operation failed. Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll Running under executable C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\ResGen.exe --- A detailed error log follows.
=== Pre-bind state information === LOG: User = domain\user LOG: DisplayName = 3rdPartyAssemblyUsedByProject, Version=1.1.263.0, Culture=neutral, PublicKeyToken=687bce93d7ce902c (Fully-specified) LOG: Appbase = file:///C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = NULL Calling assembly : System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\ResGen.exe.Config LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config. LOG: Post-policy reference: 3rdPartyAssemblyUsedByProject, Version=1.1.263.0, Culture=neutral, PublicKeyToken=687bce93d7ce902c LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL file:///C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/3rdPartyAssemblyUsedByProject.DLL. LOG: Attempting download of new URL file:///C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/3rdPartyAssemblyUsedByProject/3rdPartyAssemblyUsedByProject.DLL. LOG: Attempting download of new URL file:///C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/3rdPartyAssemblyUsedByProject.EXE. LOG: Attempting download of new URL file:///C:/Program Files/Microsoft SDKs/Windows/v7.1/Bin/3rdPartyAssemblyUsedByProject/3rdPartyAssemblyUsedByProject.EXE. LOG: All probing URLs attempted and failed.
En este punto - Estoy confundido. No estoy seguro de dónde ir después. Cualquier consejo sería bienvenido.
Cort
Lo estoy ejecutando manualmente desde la línea de comandos. He verificado que donde tengo el ensamblado de terceros, que el usuario en el que estoy conectado tiene control total en el archivo y es el propietario del archivo. – Cort
... también, como traté de mostrar al incluir mi registro de fusión, el ensamblado nunca se encuentra realmente, su ubicación está en ../lib/3rdpartyassembly.dll desde la ubicación del archivo csproj. – Cort
Puede especificar la ubicación de la dll con/p: ReferencePath = " \ ". –