我创建了一个新的.NET XUnit Core项目,将其转换为.NET Framework 4.6.1,使其与其他旧式解决方案类似,并尝试添加一个新测试。我意识到我需要将Glass Mapper用于ISitecoreContext(我认为它可能已贬值,但我们在代码中使用了它),因为这是一个Sitecore解决方案,在各个项目中都有一些自定义代码,因此我尝试添加相同的Glass Mapper库。因此,我卸载了其他几个项目,梳理了他们的项目文件以查找Castle.Core,Glass.Mapper.Sc和Sitecore Nuget软件包的版本,然后将这些Nuget软件包添加到我的项目中。
但是,现在我无法将Glass.Mapper.Sc命名空间添加到新的测试文件中。 Glass.Mapper存在,但不存在Glass.Mapper.Sc。较旧的项目是.NET Framework 4.6.1,并且Nuget软件包版本相同。我唯一看到的不同是,旧项目使用“参考”,新项目在“依赖关系”下具有Nuget包。我认为较旧的项目只是链接到根目录的packages文件夹中解决方案的Nuget软件包。
我在这个项目中缺少什么?这是因为我将其从.net核心转换为项目文件中的框架4.6.1吗?我以为C#中的新项目具有自己的Nuget程序包和程序集,而不是具有它们的解决方案?这是因为新项目在处理引用方面的方式不同吗?我无法更改解决方案或其他项目(因为我们正在尝试修复此旧代码)。我敢肯定,这是我只是忽略的愚蠢的事情,或者是我错过的基本问题。预先谢谢你。
答案 0 :(得分:0)
我有类似的问题。将Glass.Mapper.Sc
软件包添加到项目后,我手动添加了对Glass.Mapper.Sc.dll
文件夹中的packages\Glass.Mapper.Sc.Core.4.2.1.188\lib\100\
的引用(通过NuGet软件包安装软件包后,该引用并未自动添加到项目中)经理)。这是我的.csproj
文件的一部分:
<ItemGroup>
...
<!-- This one has been added during the package installation via NuGet -->
<Reference Include="Glass.Mapper, Version=4.2.1.188, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\Glass.Mapper.Sc.Core.4.2.1.188\lib\net45\Glass.Mapper.dll</HintPath>
</Reference>
<!-- This one I've added manually -->
<Reference Include="Glass.Mapper.Sc">
<HintPath>..\..\..\..\packages\Glass.Mapper.Sc.Core.4.2.1.188\lib\100\Glass.Mapper.Sc.dll</HintPath>
</Reference>
.csproj
格式为“ Microsoft.NET.Sdk”,则看起来可能会有所不同,但是想法是相同的。答案 1 :(得分:0)
在这种情况下,我认为缺少对包 Glass.Mapper.Sc.XX.MVC
的引用。
为了让它在我要升级的项目中为我工作,我必须有 2 个包引用:MVC 一个和 Glass.Mapper.Sc.Core