我在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"或我的应用程序可能无法正常工作.我尝试了"跳过这个"选项,但应用程序无效.
根据目标在系统上运行,应用程序运行正常.
为什么它不会只使用任何可用的框架,因为它被指定为支持两者?
这是一个 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) 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 服务仍然抛出异常。
我读过很多关于使用wevutil.exe的文章,它似乎正是我需要的.但是,我找不到它.我试过Windows 2003服务器,Windows 2008服务器,Windows 7等.所有回来的"'wevutil'都不被认为是内部或外部命令".TechNet(有使用它的文档)没有列出下载点,所以我认为它是随Windows提供的?
注意:我发现本文在实现期间无法在打字稿中找到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) c# ×2
.net ×1
angular ×1
implements ×1
ngondestroy ×1
ngoninit ×1
utility ×1
windows ×1
xamarin ×1