我有在本地系统中绝对可以正常工作的解决方案。但是,当在构建服务器中触发构建时,相同的代码将引发以下错误。您能帮忙吗?
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1988,5): warning MSB3245: **Could not resolve this reference. Could not locate the assembly "Company.Common.SC.Data, Version=2.5.3.32715, Culture=neutral, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.** [C:\glr\builds\7a6e3c3e\0\Company\Product\Company-sm-mvc\Company.Product.MVC.Models\Company.Product.MVC.Models.csproj]
For SearchPath "C:\glr\builds\7a6e3c3e\0\Company\Product\Company-sm-mvc\packages\Company.Common.SC.MVC.Library.1.7.0\lib\net45".
Considered "C:\glr\builds\7a6e3c3e\0\Company\Product\Company-sm-mvc\packages\Company.Common.SC.MVC.Library.1.7.0\lib\net45\Company.Common.SC.Data.winmd", but it didn't exist.
Considered "C:\glr\builds\7a6e3c3e\0\Company\Product\Company-sm-mvc\packages\Company.Common.SC.MVC.Library.1.7.0\lib\net45\Company.Common.SC.Data.dll", but it didn't exist.
Considered "C:\glr\builds\7a6e3c3e\0\Company\Product\Company-sm-mvc\packages\Company.Common.SC.MVC.Library.1.7.0\lib\net45\Company.Common.SC.Data.exe", but it didn't exist.
For SearchPath "{HintPathFromItem}".
Considered "..\packages\Company.Common.SC.Data.2.5.3\lib\net45\Company.Common.SC.Data.dll",
but its name "Company.Common.SC.Data, Version=2.5.3.23193, Culture=neutral, PublicKeyToken=null"
didn't match the expected name "Company.Common.SC.Data, Version=2.5.3.32715, Culture=neutral, processorArchitecture=MSIL".
我相信Company.Common.SC.Data
nuget库出了点问题。 nuget库是使用nuget软件包管理器创建的,在创建软件包时,我们已经给了版本号2.5.3
,但不确定如何添加该子版本。请查看错误的最后一行。
Considered "..\packages\Company.Common.SC.Data.2.5.3\lib\net45\Company.Common.SC.Data.dll",
but its name "Company.Common.SC.Data, Version=2.5.3.23193, Culture=neutral, PublicKeyToken=null"
didn't match the expected name "Company.Common.SC.Data, Version=2.5.3.32715, Culture=neutral, processorArchitecture=MSIL".
更新1:
Nuspec for Company.Common.SC.Data
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Updated for 8.0 and includes additional library code related to Dacron, Terathane and other sites that added to core capabilities.</releaseNotes>
<copyright>$copyright$</copyright>
<tags>sitecore data website common</tags>
</metadata>
</package>
答案 0 :(得分:0)
我已找到问题并能够解决。问题是正在使用AssemblyVersion号构建的nuget项目dll。这样的事情。
[assembly: AssemblyVersion("1.7.1.*")]
[assembly: AssemblyFileVersion("1.7.0")]
由于这个原因,当我们通过nuget feed将subversion添加到项目中时,将在项目参考中添加subversion(1.7.1.354567)。
我刚刚删除了*
并构建了nuget解决方案,然后创建了 Company.Common.SC.Data 的nuget程序包,然后在我的项目中再次引用了它。有效。
答案 1 :(得分:0)
我们遇到了同样的问题,但是没有使用NuGet(对我们来说不可行)。在我们的案例中,由于项目X引用了DLL Y,而后者又引用了DLL Z(X并不直接引用Z)。我们在所有参考文献中均复制了本地True和特定版本false。我们只是将所有依赖的DLL输出到一个公共的bin文件夹中。
请考虑Z的当前版本为1.1.1.1。 我们构建Y,并将其版本(1.1.1.1)也放入bin文件夹。 我们再次构建Z-它的版本现在是1.1.1.2并复制到bin文件夹中-因此我们具有Y = 1.1.1.1(在构建Z时期望Z的1.1.1.1) 如果现在已构建X,则它将从bin文件夹(1.1.1.2)中获取Y的DLL,但不是Z。
Visual Studio构建可以通过从bin文件夹中获取最新版本的Y和Z来正确处理此问题,而不必关心该版本,因为“特定版本”设置为false。
但是,msbuild抱怨着,因为它似乎忽略了这一点,并期望当前版本的Y期望的特定版本的Z(1.1.1.1)并记录“与期望的名称不匹配”错误。如果我们再次构建Y(以刷新它现在需要Z的1.1.1.2的事实),那么X会包含DLL。