簡體   English   中英

項目引用的依存關系未復制到輸出文件夾中

[英]Dependency of project reference not being copied into output folder

在將其標記為欺騙之前,我確實找到了這個問題並嘗試了該方法,但該方法不起作用

這一切都發生在Test項目中,因為具有OneTimeSetup屬性,正在調用有問題的方法-不確定是否相關,但信息越多越好

項目A

參考-System.Collections.Immutable v 1.3.33-使用ScriptC的依賴項,但也直接在代碼cs proj中使用,因此具有此條目

<Reference Include =“ System.Collections.Immutable,版本= 1.1.33.0,區域性=中性,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”> <HintPath> ... \\ packages \\ ScriptCs.Engine.Roslyn.0.16。 1 \\ lib \\ net45 \\ System.Collections.Immutable.dll </ HintPath>

<Private> True << Private> </ Reference>

項目A包含一個基類

[SetUpFixture]
public abstract class BaseClass
{
    [OneTimeSetup]
    public void DoSomething()
    {
        var MyClass = new MyClass();
        MyClass.DoStuff();
        //etc etc
    }
}

它還包含類MyClass-此類直接使用System.Collections.Immutable中的類型

public class MyClass
{
    private ImmutableDictionary<string,string> myImmutableDictionary = ImmutableDictionary.Create<string,string>();

    public void DoStuff()
    {
        //does things
    }
}

項目B-沒有直接引用System.Immutable.Collections-項目有引用到項目A

在項目B中,我們有一個繼承自項目B中的BaseClass的類

    [SetUpFixture]
    public class SubClass : BaseClass
    {
        [OneTimeSetup]
        public void SomeMethod()
        {
            DoSomething(); //Here it goes bang

        }
    }

因此,我們收到了一個問題,即由於相同原因我們在構建服務器上的所有測試均失敗的問題

無法加載文件或程序集“ System.Collections.Immutable,版本= 1.1.33.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a”或其依賴項之一。 該系統找不到指定的文件。

我在本地運行,並遇到了同樣的問題。 我調查了Project B的輸出文件夾,令我驚訝的是它不包含“ System.Collections.Immutable.dll”,因此為什么找不到它。

我的一個同事在他們的計算機上運行了它們,並且運行了測試,我們查看了項目B的輸出文件夾,更令人驚訝的是,那里有一個“ System.Collections.Immutable.dll”文件。 但是...不是在Project A的輸出文件夾(1.1.33)中找到的版本是4.xx-我以為這是來自GAC,但由於其他原因,我們無法確認它們是否具有他們的GAC中的那個dll

所以我的想法有些激動

我的理解是MSBuild將GAC中的dll作為最后的手段,應該首先使用提示路徑(是的,我檢查了提示路徑指向的dll是否也存在)

所以..

  1. 為什么未將System.Collections.Immutable.dll從項目A的輸出文件夾復制到項目B中?
  2. 我的大學機器到底從哪里來的?

我正在使用Visual Studio 2019,如果有所作為

由於您的項目(從描述中判斷)正在使用packages.config,因此您還需要將在項目A中使用的NuGet軟件包也明確安裝到項目B中,因為它們不會傳遞。

但是:System.Collections.Immutable.dll首先不應該是ScriptCs包的一部分。 這可能是ScriptC的打包問題。

另外:您可能無法在測試項目中生成綁定重定向。 如果是這樣,請嘗試將此xml添加到測試項目文件中:(請參閱無法加載文件或程序集Microsoft.Extensions.DependencyInjection.Abstractions,Version = 1.1.0.0

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

為什么未將System.Collections.Immutable.dll從項目A的輸出文件夾復制到項目B中?

也許您使用Build Depenencies => Project Dependencies導致了此問題。 請轉到Add => Reference => Projects => Solution添加項目參考。

在此處輸入圖片說明

我的大學機器到底從哪里來的?

我已經簽入vs2019,projectB中的dll版本與projectA中的相對應。 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM