Dll .Net将引用程序集的错误版本添加到.csproj文件中
我们正在开发一个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”…WTFDll .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
我怀疑VisualStudio显示了您所引用的dll的正确版本,但在csproj中有一个来自GAC或其他地方的版本 以下是对我有效的方法:
最终,您可以手动编辑csproj文件并设置正确的版本。我怀疑Visual studio显示的是您引用的dll的正确版本,但在csproj中有一个来自GAC或其他地方的版本 以下是对我有效的方法:
<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.