Dll .Net将引用程序集的错误版本添加到.csproj文件中

Dll .Net将引用程序集的错误版本添加到.csproj文件中,dll,.net-assembly,gac,Dll,.net Assembly,Gac,我们正在开发一个DLL,称之为“My.DLL”,它需要引用一个较旧版本的.Net Framework DLL(比应用程序的目标旧) 即: 应用程序(My.dll)的目标框架=“.Net Framework 4” 我们需要参考System.Web.Mvc v3.0.0.0(与外部主机应用程序兼容) 将应用程序(My.dll的)目标框架设置为4以外的任何值都会破坏代码 因此,我们只需将System.Web.Mvc v3.0.0.0DLL复制到项目的“lib”文件夹中,并直接添加对该程序集的引用 Vi

我们正在开发一个DLL,称之为“My.DLL”,它需要引用一个较旧版本的.Net Framework DLL(比应用程序的目标旧)

即:

应用程序(My.dll)的目标框架=“.Net Framework 4”

我们需要参考System.Web.Mvc v3.0.0.0(与外部主机应用程序兼容)

将应用程序(My.dll的)目标框架设置为4以外的任何值都会破坏代码

因此,我们只需将System.Web.Mvc v3.0.0.0DLL复制到项目的“lib”文件夹中,并直接添加对该程序集的引用

Visual Studio显示的引用MVC程序集的版本是“v3.0.0.0”…太棒了

但是,添加引用后,项目文件最终会引用“v4.0.0.1”…WTF


我怀疑VisualStudio显示了您所引用的dll的正确版本,但在csproj中有一个来自GAC或其他地方的版本

以下是对我有效的方法:

  • 转到csproj(在Visual studio中)
  • 在引用时,将“特定版本”设置为true
  • 拯救一切
  • 在同一引用上,将“特定版本”设置回false。(如果你需要的话,也可以保留为真)
  • 在CsProj中,您现在应该有正确的版本。
    最终,您可以手动编辑csproj文件并设置正确的版本。

    我怀疑Visual studio显示的是您引用的dll的正确版本,但在csproj中有一个来自GAC或其他地方的版本

    以下是对我有效的方法:

  • 转到csproj(在Visual studio中)
  • 在引用时,将“特定版本”设置为true
  • 拯救一切
  • 在同一引用上,将“特定版本”设置回false。(如果你需要的话,也可以保留为真)
  • 在CsProj中,您现在应该有正确的版本。 最终,您可以手动编辑csproj文件并设置正确的版本。

    “策略文件重定向”,这在设计时也是有效的。所以它记录了重定向的版本。在运行时,实际上没有出现任何错误。“策略文件重定向”,这在设计时也是有效的。所以它记录了重定向的版本。在运行时,实际上没有发生任何错误。
    <Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\System.Web.Mvc.dll</HintPath>
    </Reference>
    
    Assembly Binder Log Entry  (12/07/2017 @ 12:17:55 PM)
    
    The operation was successful.
    
    Bind result: hr = 0x0. The operation completed successfully.
    [...OTHER LOG STATEMENTS OMITTED FOR BREVITY...]
    
    LOG: Publisher policy file redirect is found: 4.0.0.1 redirected to 4.0.0.1.
    LOG: ProcessorArchitecture is locked to MSIL.
    LOG: Post-policy reference: System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL
    LOG: Found assembly by looking in the GAC.
    LOG: Binding succeeds. Returns assembly from C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Mvc\v4.0_4.0.0.1__31bf3856ad364e35\System.Web.Mvc.dll.
    LOG: Assembly is loaded in default load context.