44

estoy usando DotNetOpenAuth (que hace referencia System.Web.Mvc versión 1.0.0.0) en un proyecto de MVC 3.0.0.0 en Visual Studio 2010.Asamblea Encuadernación redirección y análisis de código

estoy usando redirección estructura de encuadernación de la siguiente manera: -

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

Todo funciona bien, excepto el análisis de código que me da los siguientes errores: -

CA0001: El siguiente error fue encontrado mientras que la lectura del módulo X: referencia Asamblea no puede ser r resuelto: System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35.

y

CA0058: El ensamblaje de referencia 'System.Web.Mvc, versión = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' no se pudo encontrar. Este ensamblaje es necesario para el análisis y fue referenciado por: X.

¿Hay alguna manera de que la herramienta de análisis de código respete la redirección de enlace de ensamblaje?

Respuesta

63

Sólo para complementar con un poco de respuesta más precisa:

Necesitas o bien ejecutar FxCopCmd.exe con:

fxcopcmd.exe /assemblyCompareMode:StrongNameIgnoringVersion 

o modificar su archivo de proyecto de Visual Studio para el grupo de propiedades de cada configuración de generación, como esto:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    ... 
    <CodeAnalysisAdditionalOptions>/assemblyCompareMode:StrongNameIgnoringVersion</CodeAnalysisAdditionalOptions> 
</PropertyGroup> 
+0

Gracias.He añadido la línea de abajo, 'CodeAnalysisAdditionalOptions>/assemblyCompareMode: StrongNameIgnoringVersion' bajo ' Depurar' y '' y '' –

+1

Desafortunadamente, eso no funciona para mí por alguna razón; Todavía recibo el mismo error. –

+0

¡Eres brillante @peter_raven! –

6

Consulte http://davesbox.com/archive/2008/06/10/reference-resolution-changes-in-code-analysis-and-fxcop-part-1.aspx y http://davesbox.com/archive/2008/06/14/reference-resolutions-changes-in-code-analysis-and-fxcop-part-2.aspx para obtener un poco de información general.

En VS2010/FxCop 10.0, hay un nuevo modificador de línea de comando/assemblyCompareMode para fxcopcmd.exe que le permite especificar el modo de comparación sin perder el tiempo con el archivo .config. Puede especificar esto en su proyecto VS utilizando la propiedad CodeAnalysisAdditionalOptions MSBuild.

+2

el enlace está muerto – Adi

4

Además de peter_raven solución puede especificar la opción de hacer el análisis de código trabajar con TFS construir. Añadir esto en opciones de construcción, pestaña de procesos, la categoría avanzada en "Argumentos" MSBuild:

/p:CodeAnalysisAdditionalOptions=/assemblyCompareMode:StrongNameIgnoringVersion 
+0

Esto funcionó para mi error de compilación TFS, ¡gracias! – JLWarlow

1

Usar esta opción si necesita desactivar el análisis de código.

En Visual Studio 2012,

  1. Haga clic derecho sobre el proyecto y seleccione "Propiedades" en el menú emergente.
  2. Haga clic en la pestaña "Análisis de código" y desactive la casilla "Habilitar el análisis de código de construir"

limpieza y construcción. El error de Code Analysis debería desaparecer.