晚上都我已经完成了准备将代码库迁移到git的任务。作为这些准备工作的一部分,我一直在删除多余的代码,并用对内部Nuget软件包提供的相同DLL的引用替换对签入DLL的引用。
我已经更新了项目参考,唯一更改的是提示路径,但是在构建时出现了奇怪的错误,在调查时甚至出现了陌生的信息!
因此,请束手无策。
首先是有问题的参考(我将在此处指出这是475项目解决方案的唯一问题;每个.csproj均已更新以指向新位置)
继承人原始参考
<Reference Include="Microsoft.SqlServer.SQLTask, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Microsoft.SqlServer.SQLTask.dll</HintPath>
<Private>True</Private>
</Reference>
现在是更新的参考
<Reference Include="Microsoft.SqlServer.SQLTask, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\packages\MyCompany.Client.Winforms.ThirdPartyLibraries.5.0.0\lib\net472\Microsoft.SqlServer.SQLTask.dll</HintPath>
<Private>True</Private>
</Reference>
它应该足够明显,但要陈述显而易见;在两个引用之间只有DLL的路径已更改。
现在的问题。 MSBuild显示以下错误;
如您所见,问题显然是MSBUILD认为我正在引用版本14.0.0.0?可是等等;那不是我上面的参考部分显示的对...
到Visual Studio!特别是本参考资料的属性。
好的,因此似乎MSBUILD(从我们使用的批处理文件生成)和VS都出于某种原因都无法通过GAC解决。所以现在的问题是为什么。
我显然明白,特定的版本标志是为什么允许这样做,而不是为什么这样做。
组件位于正确的位置;我不得不清理一些路径,但是您可以假定它与引用正确匹配(.csproj文件已使用脚本更新;已更新了1000个引用,因此我确信路径完全匹配)
我认为将旧的\ lib文件夹打包到Nuget软件包中时,可能是发生了错误,但是还原到packages文件夹中的DLL与原始DLL相同。这是一些证据来支持这一说法。
这是程序集的DotPeek;它显示的名称,版本和体系结构均与参考文献相符。
这是sn.exe(强名称)的输出,显示了公共密钥令牌;也与参考匹配。
我很茫然,在这一点上任何帮助或想法都将受到欢迎。