我正在将一个项目从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) 我对这个新版本的SQL Server Express非常感兴趣.
(对我而言)不清楚安装程序应该如何部署使用LocalDB的应用程序.
是否需要在客户端PC上安装SQL Server Express然后附加MDF文件?
或者它只需要运行它LocalDB.msi,它作为一个独立的文件,如SQL Server Compact?
sql-server installation sql-server-express sql-server-2012 localdb
我现在正式感到困惑.有关安装.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 框架中任何引用类的反编译源代码时,例如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) 许多 .NET 程序集附带一个仅参考版本,该版本去除了实际代码,只有元数据。
例如,我可以在我的机器上的多个位置找到 System.Core.dll,其中两个是:
第一个只有元数据,在默认加载上下文中加载它会引发 BadImageFormat 异常。
System.BadImageFormatException:无法加载文件或程序集“System.Core,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”或其依赖项之一。不应为执行加载引用程序集。它们只能在仅反射加载器上下文中加载
给定程序集的路径,是否可以确定它是否是“参考程序集”?
我可以检查关键字“参考程序集”的路径,但是如果程序集被复制到不同的位置,这很麻烦,并且不起作用。如果有帮助,我可以自由地首先在仅反射上下文中加载程序集。
我有这个错误,我无法搞清楚.
我在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"
如果有人能够提供一些有关它的原因和/或如何修复它的信息,我将不胜感激.
谢谢.
c# ×3
.net ×2
.net-4.5 ×2
.net-4.0 ×1
.net-core ×1
assemblies ×1
decompiling ×1
dll ×1
installation ×1
localdb ×1
sql-server ×1
wpf ×1