相关疑难解决方法(0)

为什么DbParameterCollection中的三个属性在引用程序集中是抽象的,否则是虚拟的?

我正在将一个项目从project.json一个新的csproj格式转移到它,它包含一个派生自的类DbParameterCollection.在我的真实项目中,我使用多目标,但出于这个问题的目的,我们只需要关心net45.

编译器告诉我,我必须覆盖以前没有的三个属性:

如果您按照这些文档链接(适用于.NET 4.5),您将看到所有属性都是虚拟的 - 而不是抽象的.如果我只是通过调用来构建代码csc,那么一切都很好......只有当我使用.NET Core SDK时才遇到问题.

以下是重现问题的示例代码:

项目文件:

<Project Sdk="Microsoft.NET.Sdk">    
  <PropertyGroup>
    <TargetFramework>net45</TargetFramework>
  </PropertyGroup>    
</Project>
Run Code Online (Sandbox Code Playgroud)

C#代码:

using System;
using System.Collections;
using System.Data.Common;

public class DummyParameterCollection : DbParameterCollection
{
    public override int Count => 0;
    public override object SyncRoot => null;
    public override void Remove(object value) {}
    public override void RemoveAt(int index) {}
    public override void RemoveAt(string parameterName) {}
    public override int Add(object value) => 0;
    public override …
Run Code Online (Sandbox Code Playgroud)

c# assemblies .net-core

67
推荐指数
1
解决办法
2476
查看次数

客户端PC上的LocalDB部署

我对这个新版本的SQL Server Express非常感兴趣.

(对我而言)不清楚安装程序应该如何部署使用LocalDB的应用程序.

是否需要在客户端PC上安装SQL Server Express然后附加MDF文件?

或者它只需要运行它LocalDB.msi,它作为一个独立的文件,如SQL Server Compact?

sql-server installation sql-server-express sql-server-2012 localdb

43
推荐指数
1
解决办法
4万
查看次数

安装.NET 4.5是否真的取代了.NET 4.0程序集?

我现在正式感到困惑.有关安装.NET 4.5框架的MSDN文章说明如下:

".NET Framework 4.5取代了.NET Framework 4.当您在安装了.NET Framework 4的系统上安装.NET Framework 4.5时,会更换程序集."

为什么然后,我在我的文件系统上找到.NET 4.0程序集?当我浏览到"C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework"时,我找到了几个文件夹,包括包含DLL的"v3.5","v4.0"和"v4.5"对于每个版本.怎么了?

这告诉我,.NET Framework 4的程序集根本不会替换为4.5.有人可以为我澄清这个吗?

.net compatibility .net-4.0 .net-4.5

14
推荐指数
1
解决办法
8408
查看次数

反编译源仅显示每个 .NET Framework 类的“throw null”

我有

  • 已安装 Visual Studio Community 2019,版本 16.3.3(包括“ASP.NET 和 Web 开发”和“.NET Core 跨平台开发”)
  • 并选中“启用导航到反编译源”,
  • 并创建了一个新的 ASP.NET Core Web 应用程序 (.NET Core 3.0.0)

但是当我然后查看例如 .NET 框架中任何引用类的反编译源代码时,例如System.Console或 for Microsoft.AspNetCore.Builder(或几乎任何其他类型),我能看到的每个方法的主体都是 throw null(我在下面展示了一个摘录)

我已经阅读了这个问题(更新:和问题的答案是重复的),但是只有一个班级有这个问题(因为它是在增量更新中添加的)。对我来说,这个问题适用于 .NET 框架中的每个类。我究竟做错了什么?这是预期的行为,我应该使用 dotPeek 之类的东西吗?我可以使用符号服务器而不是反编译源吗?(原谅我的无知,我真的是 C# 的新手......和 ​​.NET 世界)

region Assembly System.Console, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.0.0\ref\netcoreapp3.0\System.Console.dll
// Decompiled with ICSharpCode.Decompiler 4.0.0.4521
#endregion

using System.IO;
using System.Text;
namespace System
{

// Summary:
// .... 
    public static ConsoleColor BackgroundColor
    {
        get
        {
            throw null;
        } …
Run Code Online (Sandbox Code Playgroud)

c# decompiling visual-studio

8
推荐指数
1
解决办法
566
查看次数

如何识别“参考程序集”?

许多 .NET 程序集附带一个仅参考版本,该版本去除了实际代码,只有元数据。

例如,我可以在我的机器上的多个位置找到 System.Core.dll,其中两个是:

  • C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Core.dll 大小:276 KB
  • C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll 大小:1291 KB

第一个只有元数据,在默认加载上下文中加载它会引发 BadImageFormat 异常。

System.BadImageFormatException:无法加载文件或程序集“System.Core,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”或其依赖项之一。不应为执行加载引用程序集。它们只能在仅反射加载器上下文中加载

给定程序集的路径,是否可以确定它是否是“参考程序集”?

我可以检查关键字“参考程序集”的路径,但是如果程序集被复制到不同的位置,这很麻烦,并且不起作用。如果有帮助,我可以自由地首先在仅反射上下文中加载程序集。

.net c# dll .net-assembly

5
推荐指数
1
解决办法
1675
查看次数

"PresentationCore.dll"和"System.dll"中都存在"System.Windows.Input.ICommand"类型

我有这个错误,我无法搞清楚.

我在Windows 8上使用VS 2012(VS11)和.net4.5,在编译与VS 2010和.net4.0一起使用的项目时出现此错误.

这是完整的错误:

该类型System.Windows.Input.ICommand存在于'c:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\PresentationCore.dll'和'c:\ Windows\Microsoft.NET\Framework\v4.0.30319\System中.DLL"

如果有人能够提供一些有关它的原因和/或如何修复它的信息,我将不胜感激.

谢谢.

wpf .net-4.5 visual-studio-2012

3
推荐指数
1
解决办法
3983
查看次数