gpt4 book ai didi

.net-4.5 - 在Visual Studio 2015中被破坏

转载 作者:行者123 更新时间:2023-12-04 16:13:56 24 4
gpt4 key购买 nike

我拥有Visual Studio 2015 Enterprise,发现无法编译几乎所有现有的2013项目。进一步的调查表明,Visual Studio 2015无法为在Visual Studio 2013中可以使用的类型生成伪造品。

请考虑以下步骤来重现:

  • 创建针对.NET 4.5的单元测试项目
  • 右键单击“引用”选项卡中的“系统”,然后选择“添加假货程序集”。
  • 要消除此示例的影响,请编辑随后的“System.fakes”文件:

  • <Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
    <Assembly Name="System" Version="4.0.0.0"/>
    <StubGeneration>
    <Clear/>
    </StubGeneration>
    <ShimGeneration>
    <Clear/>
    </ShimGeneration>
    </Fakes>

  • 然后编辑“mscorlib.fakes”文件以填充ConcurrentDictionary :

  • <Fakes xmlns="http://schemas.microsoft.com/fakes/2011/" Diagnostic="true">
    <Assembly Name="mscorlib" Version="4.0.0.0"/>
    <StubGeneration>
    <Clear/>
    </StubGeneration>
    <ShimGeneration>
    <Clear/>
    <Add FullName="ConcurrentDictionary"/>
    </ShimGeneration>
    </Fakes>

  • 编译项目。
  • 这会在mscorlib.4.0.0.0.Fakes.messages文件(在FakesAssemblies文件夹中生成)中生成以下错误消息:

  • warning : compilation failed, retrying without Code Contracts



    并在输出窗口中显示以下错误消息:

    c:\temp\UnitTestProject1\UnitTestProject1\f.cs(955,13): error CS0311: The type 'System.Collections.Concurrent.ConcurrentDictionary' cannot be used as type parameter 'TShimmed' in the generic type or method 'ShimRuntime.Bind(TShim, TBound)'. There is no implicit reference conversion from 'System.Collections.Concurrent.ConcurrentDictionary' to 'System.Collections.Generic.IReadOnlyCollection>'. [c:\temp\UnitTestProject1\UnitTestProject1\obj\Debug\Fakes\m\f.csproj]

    c:\temp\UnitTestProject1\UnitTestProject1\f.cs(979,13): error CS0311: The type 'System.Collections.Concurrent.ConcurrentDictionary' cannot be used as type parameter 'TShimmed' in the generic type or method 'ShimRuntime.Bind(TShim, TBound)'. There is no implicit reference conversion from 'System.Collections.Concurrent.ConcurrentDictionary' to 'System.Collections.Generic.IReadOnlyDictionary'. [c:\temp\UnitTestProject1\UnitTestProject1\obj\Debug\Fakes\m\f.csproj]

    GENERATEFAKES : error : project compilation failed with exit code 1



    摆弄mscorlib.fakes设置似乎无济于事。
    例如,TypeName,FullName和Namespace属性的各种排列会产生相同的“编译失败,退出代码为1”。

    禁用代码契约只会破坏更多东西:

    Warning The element 'Fakes' in namespace 'http://schemas.microsoft.com/fakes/2011/' has invalid child element 'StubGeneration' in namespace 'http://schemas.microsoft.com/fakes/2011/'. UnitTestProject1 c:\temp\UnitTestProject1\UnitTestProject1\Fakes\mscorlib.fakes 4



    非常感谢您了解如何解决/解决此问题的任何帮助。

    最佳答案

  • 如果您使用的是Visual Studio 2015,请输入Enterprize.kindly remove
    旧的Xrm dll并添加新的CRM 2016 SDK Xrm Dll生成项目
    还可以将.Net Framework更改为最新版本。
  • 构建项目生成系统伪造程序集后,我们将获得
    mscorlib和system.Fakesjust在两个文件上都删除此行<Add FullName="ConcurrentDictionary"/>并构建项目
  • 关于.net-4.5 - 在Visual Studio 2015中被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31907379/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com