小编Iro*_*Rod的帖子

创建一个适用于任何.NET版本的.NET应用程序(如果只有基本要求)

我在Windows 10上使用VS2017来处理C#项目.它是一个非常小的控制台应用程序,只需要管理员权限,然后运行HTA.

代码仅引用这些.NET程序集:

using System;
using System.Diagnostics;
using System.IO;
Run Code Online (Sandbox Code Playgroud)

由于所有这些都存在于.NET以及2.0之后,因此似乎应该可以创建应用程序而无需指定除.NET 2.0之外的任何内容.但这样做会导致应用程序在仅具有.NET 4.0或更高版本的系统上运行时显示"必须安装.NET 2.0或3.5"消息.

有没有办法创建这个应用程序,所以它没有指定.NET版本?我尝试删除<TargetFrameworkVersion>.csproj文件,但它仍然认为它是一个.NET 4.0应用程序.

UPDATE

基于建议的答案和本文,我更新了App.config以显示它支持v2和v4:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v2.0.50727"/>
  <supportedRuntime version="v4.0"/>
</startup>
Run Code Online (Sandbox Code Playgroud)

然后,我将目标设置为.NET Framework 4.6.1,并在安装了.NET Framework 2.0/3.5的Win7Pro-64bit系统上运行.它显示消息"您必须首先安装以下版本的.NET Framework之一",并且仅列出了v4.0.30319.

然后,我将目标设置为.NET Framework 2.0,并在安装了.NET Framework 4.0的Win10Pro-64bit系统上运行.它显示一条消息,我必须"NET Framework 3.5"或我的应用程序可能无法正常工作.我尝试了"跳过这个"选项,但应用程序无效.

根据目标在系统上运行,应用程序运行正常.

为什么它不会只使用任何可用的框架,因为它被指定为支持两者

.net c#

6
推荐指数
1
解决办法
560
查看次数

找不到 System.MissingMethodException 方法“System.Net.Http.HttpClientHandler.set_Proxy”

这是一个 Xamarin 解决方案,我在此消息的标题中发现了错误。当然,我可以轻松确认PCL项目中HttpClientHandler上有Proxy属性。并且解决方案构建没有错误。只有当我运行时它才会产生这个错误(在 Droid 或 iOS 上),并且在它调用 PCL 中实例化 HttpClient 的方法时会产生这个错误。请注意,它甚至没有达到该方法。错误出现在应用程序启动方法上;例如,UIApplication.Main()

如果我注释掉处理程序并在没有处理程序的情况下实例化 HttpClient,只要我在开放的互联网上,它就可以正常工作。但我试图让它从代理后面工作。

进一步调查表明,设备项目没有对 System.Net.Http 的引用。所以我添加了这些——它表明 Xamarin.iOS 和 Xamarin.Android 作为包——但它仍然产生错误。

我不清楚错误告诉我什么,但我相信这意味着设备项目看不到 System.Net.Http.HttpClientHandler?

    private HttpClient GetHttpClient()
    {
        WebProxy proxy = new WebProxy(ProxyConfig.Url)
        {
            Credentials = new NetworkCredential(ProxyConfig.Username, ProxyConfig.Password)
        };

        // At runtime, when GetHttpClient is invoked, it says it cannot find the Proxy setter
        HttpClientHandler handler = new HttpClientHandler
        {
            Proxy = proxy,
            UseProxy = true,
            PreAuthenticate = true,
            UseDefaultCredentials = false,
        };
        HttpClient client = new HttpClient(handler);

        // This works …
Run Code Online (Sandbox Code Playgroud)

missingmethodexception xamarin

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

System.TypeLoadException Microsoft.VisualBasic ASP.NET Core 2

Microsoft.VisualBasic 程序集是否与 ASP.NET Core2 不兼容?

我有一个 C# 类库,它提供了一种读取 CSV 文件的方法,我选择使用 Microsoft.VisualBasic.FileIO.TextFieldParser 来读取文件。在 WPF 应用程序中引用时,库方法效果很好。然而,在 ASP.NET Core2 web 服务中,虽然它编译没有错误,但它在运行时抛出异常:

异常 System.TypeLoadException 无法从程序集“Microsoft.VisualBasic,版本=10.0.3.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”加载类型“Microsoft.VisualBasic.FileIO.TextFieldParser”。

我怀疑这是因为与核心服务不兼容。我确实尝试将编译器标志从 NETCOREAPP2 更改为 NET461,但 Web 服务仍然抛出异常。

c# asp.net-core-2.0

2
推荐指数
1
解决办法
732
查看次数

我在哪里获得wevutil?

我读过很多关于使用wevutil.exe的文章,它似乎正是我需要的.但是,我找不到它.我试过Windows 2003服务器,Windows 2008服务器,Windows 7等.所有回来的"'wevutil'都不被认为是内部或外部命令".TechNet(有使用它的文档)没有列出下载点,所以我认为它是随Windows提供的?

windows utility

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

角度2:找不到ngOnInit / ngOnDestroy

注意:我发现本文在实现期间无法在打字稿中找到OnInit,但是下面的代码已经导入了OnInit/ OnDestroy

我发现的所有示例(例如,使用Route Parameters)都指示在类定义中添加implements OnInit/ OnDestroy子句,并在预订时从路由中获取参数时包括了ngOnInit/ ngOnDestroy方法-代码正在执行此操作。

但是,VS2017报告该子句错误“错误地实现OnInit / OnDestroy”,并报告该函数错误“无法找到ngOnInit / ngOnDestroy”。

如果删除该implements子句并注释ngOnInit/ ngOnDestroy函数(仅将代码保留在的主体中ngOnInit),则该代码有效;成功从路由参数中获取参数。

import { Component, Inject, OnInit, OnDestroy } from '@angular/core';
import { Http } from '@angular/http';
import { ActivatedRoute } from '@angular/router';

@Component({
    selector: 'submission',
    templateUrl: './submission.component.html'
})
export class SubmissionComponent implements OnInit, OnDestroy {
    private baseUrl: string;
    private http: Http;
    private route: ActivatedRoute;
    private sub: any; …
Run Code Online (Sandbox Code Playgroud)

implements ngoninit angular ngondestroy

0
推荐指数
1
解决办法
1123
查看次数