我正在學習一些實體框架,并已開始圍繞它編寫一些測試用例。我遇到一個問題,即使我可以在.net應用程序本身中正常運行(并且程序集的版本相同),也無法在測試用例中加載程序集。我得到的錯誤:消息:System.IO.FileLoadException:無法加載文件或程序集“ Npgsql.EntityFrameworkCore.PostgreSQL,版本= 2.0.2.0,區域性=中性,PublicKeyToken = 5d8b90d52f46fda7”或其依賴項之一。無法驗證強名簽名。程序集可能已被篡改,或者已被延遲簽名,但未使用正確的私鑰完全簽名。(來自HRESULT的異常:0x80131045)它可以在.net應用中使用我從讓Windows窗體應用程序運行正常開始。這是針對本地postgres DB使用SimpleInjector,EF Core,Npgsql。我已經使它可以正常工作(數據庫創建,遷移等),并且像這樣加載了DataContext(我的DbContext):DbContextOptionsBuilder builder = new DbContextOptionsBuilder<DataContext>();DbContextOptions<DataContext> options = (DbContextOptions<DataContext>)builder.UseNpgsql(connectionString).Options; return new DataContext(options,NLog.LogManager.GetCurrentClassLogger());我可以做一個簡單的測試,從數據庫中列出組織。當前這是在Form1中完成的。因此,進入測試(我遇到問題的地方)我向新的“測試”類庫(EF Core,Npgsql等)添加了相同的依賴項。我也依賴EntityFrameworkTest項目,因此我可以引用其模型。我簡化了測試用例(OrgDBTest),以便它嘗試在其構造函數中創建上下文。我這樣做是為了讓我知道我的問題與SimpleInjector無關。我的期望是測試將運行,并在其構造函數中創建一個DbContext。但是,我無法加載程序集,因此無法創建DbContext ...,以便可以繼續創建/播放測試。代碼在這里(非常?。篽ttps : //github.com/scornflake/entityframework-learn但是很迷失,好像我在測試用例中所做的和在應用程序中所做的一樣,但是程序集加載似乎有所不同。有任何想法嗎?
無法從.NET類庫xUnit測試加載Npgsql
慕田峪7331174
2021-05-18 17:30:02