标签: .net-4.8

从 .Net Framework 4.7 升级到 4.8 后使用 MSBuild 发布项目时出错

我正在将一个 Asp.Net 网站项目从 4.7 升级到 .net framework 4.8。升级后,项目从visual studio成功构建,并且在本地机器上运行也没有任何问题。当使用 MSBuild 发布同一个项目时,我收到以下错误: (AspNetMerge target) -> aspnet_merge : error occurred: An error occurred when merging assemblies: Unresolved assembly reference not allowed: System.Net.Http.

使用的 MsBuild 命令是: msbuild.exe "D:\Enterprise\Enterprise.sln" /nologo /nr:false /t:Build /p:DeployOnBuild=true /p:Configuration=Release /p:PublishProfile=VSO

此处引用的 VSO.pubxml 文件具有以下配置:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>..\..\Publish\Web</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>False</EnableUpdateable>
    <DebugSymbols>False</DebugSymbols>
    <WDPMergeOption>MergeAllOutputsToASingleAssembly</WDPMergeOption>
    <UseMerge>True</UseMerge>
    <SingleAssemblyName>MergedAssembly</SingleAssemblyName>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

您可以看到<UseMerge>设置为true将输出合并到单个程序集。我尝试通过完全禁用合并来解决问题,但我想保持合并选项处于启用状态,因为它在之前的发布管道中以这种方式配置。任何帮助将不胜感激。

.net c# asp.net msbuild .net-4.8

5
推荐指数
2
解决办法
668
查看次数

C# CustomAttributeData 类到属性

我在一个类中有以下代码Swashbuckle.Swagger.IOperationFilter

List<CustomAttributeData> controllerAttributes = apiDescription
    .ActionDescriptor
    .ControllerDescriptor
    .ControllerType
    .CustomAttributes
    .Where(a => a.AttributeType == typeof(SwaggerFileInFormDataAttribute))
    .ToList();
Run Code Online (Sandbox Code Playgroud)

我正在成功获取该集合。我想将集合转换List<CustomAttributeData>为我的自定义属性的集合List<SwaggerFileInFormDataAttribute>

在此输入图像描述

我想将该System.Reflection.CustomAttributeData类转换为我的自定义属性SwaggerFileInFormDataAttribute


编辑 1:
这是我的SwaggerFileInFormDataAttribute属性的样子。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class SwaggerFileInFormDataAttribute : Attribute
{
    private ICollection<string> displayNames;

    public SwaggerFileInFormDataAttribute()
    {
        this.DisplayNames = new List<string> { "File" };
    }

    public SwaggerFileInFormDataAttribute(params string[] displayNames)
    {
        this.DisplayNames = displayNames;
    }

    public ICollection<string> DisplayNames
    {
        get
        {
            if (this.displayNames == null) …
Run Code Online (Sandbox Code Playgroud)

c# reflection attributes .net-4.8

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

Visual Studio Clickon 特定目标选项卡丢失

按照此链接中的说明使用 Clickonce 进行部署: https://learn.microsoft.com/en-us/visualstudio/deployment/quickstart-deploy-using-clickonce-folder ?view=vs-2019

我右键单击项目并选择“发布”,然后将打开“发布”向导,并按预期选择“目标”选项卡,然后选择“文件夹”选项。然后,当我单击“下一步”按钮时,不会出现“特定选项卡”,而是直接进入“发布位置”选项卡。问题是我无法在任何地方选择“Clickonce”,因为我看不到“特定目标”选项卡,因此没有“安装位置”、“设置”、“签名清单”或“配置”选项卡。

这是未出现的预期选项卡: 在此输入图像描述

这是我看到的屏幕(抱歉,是西​​班牙语): 在此输入图像描述

这是一个 .NET Framework 4.8 项目。

为什么 Clickonce 不见了?我该怎么做才能在向导中获得正确的屏幕以便我可以使用 Clickonce?

谢谢

更新:我尝试更新到.NET 5,然后 ClickOnce 神奇地出现在发布向导中。那么,如何在 SDK 方案项目中使用 ClickOnce 和 net48 呢?有什么帮助吗?

clickonce visual-studio visual-studio-2019 .net-4.8

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

System.Configuration.ConfigurationManager 与 Microsoft.Extensions.Configuration

我正在开发一个类库(.NET Standard 2.0)CL,它将由我们的一些旧项目(.NET Framework 4.6.1)LP和许多新实现(.NET Core 3.1)NI使用。

我的类库 CL 需要一些配置设置,但是当它被新的实现 NI 使用时,CL 会收到Microsoft.Extensions.Configuration.IConfiguration,就像 NI 那样appSettings.json

当从遗留项目 LP 使用时,CL 接收System.Configuration.ConfigurationManager.AppSettings为 LP 具有 或web.config之一app.config

是否有任何优雅的方法可以从 .NET Framework 或 .NET Core 两种类型的项目中读取配置?我不想读取 LP 或 NI 等正在使用我的库 CL 的项目中的配置,因为该配置对他们来说没有用。

private static void LoadConfiguration() // called from constructor
{
  string receivedFromNETCore = configuration["DataMappingXml"]; 
  // Microsoft.Extensions.Configuration.IConfiguration    
  string receivedFromNETFramework = 
  ConfigurationManager.AppSettings["DataMappingXml"];
    
  // TODO: LOAD configuration and process.
}
Run Code Online (Sandbox Code Playgroud)

configurationmanager .net-core .net-standard-2.0 .net-4.8 microsoft.extensions.configuration

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

.NET 对不支持的 ISO 639-2 文化的多语言支持

我目前正在开发一个 ASP.NET 4.8 MVC 单页应用程序,预计支持多种语言。从各种资源中,我发现实现此目的的一种方法是使用App_GlobalResources每种受支持语言的资源文件。

我在页面中添加了一些导航链接,用于更新线程的当前文化信息,从而将这些语言资源拉入我的应用程序中。

var cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)
                             .FirstOrDefault(x => x.ThreeLetterISOLanguageName == language);

if (cultureInfo == null)
     cultureInfo = CultureInfo.GetCultureInfo("en-US");

Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
Run Code Online (Sandbox Code Playgroud)

这对于有文化支持的语言来说似乎效果很好。(IE:“eng”拉回en-us并找到Content.en.resx文件,“spa”检索Content.es.resx等)但是我遇到了困难,语言出现在 ISO639-2 列表中(苗族、凯伦族)但没有关联的 CultureInfo跟他们。

我尝试过使用这些来分离文化CultureAndRegionInfoBuilder,但根据我的理解,这只能在我的计算机上运行,​​而不能在网络上运行。我也无法“破解”现有文化 - 即采用越南语并替换其ThreeLetterISOLanguageName和其他属性 - 因为这些属性是只读的。

当 CultureInfo 不可用时,是否有明确的方法告诉我的代码引用特定的内容文件?还是我以完全错误的方式处理这个问题?

c# asp.net-mvc multilingual cultureinfo .net-4.8

5
推荐指数
0
解决办法
472
查看次数

未找到 System.Text.Json,即使它是项目的一部分

我有一个 Winforms 项目,并且安装了最新NET6版本(当前为 6.0.4)。

我正在使用RestSharp,当我创建时,RestClient我得到以下异常:

未找到文件或程序集“System.Text.Json,Version=5.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。

RestSharp nuget 包依赖项显示:

在此输入图像描述

App.config也有以下绑定:

<dependentAssembly>
    <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.4" newVersion="6.0.0.4" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

我也尝试使用此处Newtonsoft.Json解释的替代方法,但我得到了上面相同的异常。

有什么办法解决这个问题吗?

c# winforms restsharp .net-4.8 .net-6.0

5
推荐指数
0
解决办法
2685
查看次数

MS Graph C# .Net 为启用 RSVP 的用户创建日历事件

我们目前正在将 Microsoft Graph api 集成到网站中,以创建从我们的系统生成的日历事件,用户可以在其中回复该事件。

我们目前正在使用身份验证代码流程对用户进行授权。 https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

其中前端是一个 React 应用程序,后端是一个 .Net 4.8 C# 项目。

对于我们的谷歌解决方案,我们为每个集成用户单独创建活动,并将组织者分配为与我们网站绑定的服务电子邮件帐户。这允许用户回复它,我们可以根据他们的回复跟踪他们的状态。这还允许我们在必要时跟踪和删除每个用户的各个事件。

在搜索和测试 MS Graph 解决方案时,根据此处的答案更改组织器不起作用。 MS-Graph 事件中的 Organizer 和 isOrganizer 属性是否有效?

在创建事件时,为其创建事件的个人被视为事件的组织者。这导致 RSVP 未显示在 Outlook 中。

有没有办法为组织者是通用电子邮件帐户(而不是 Outlook 帐户)的用户创建活动,同时还跟踪该活动 ID,以便我们可以跟踪 RSVP 状态,并在必要时进行任何更新?

c# calendar .net-4.8 microsoft-graph-api

5
推荐指数
0
解决办法
242
查看次数

Web API 作为 Windows 服务

所以我正在 Visual Studio 2019 中创建一个新的 .Net Framework 4.8 Web API,我想知道如何将 API 创建为 Windows 服务?我似乎找不到任何示例或在线资源来这样做。我可以在 VS 中本地运行 API,它会打开 Chrome 并在它启动的本地 IIS 服务器下显示响应。我如何在仍然使用 HTTPS 的同时将同一个项目编译为 Windows 服务?

asp.net .net-4.8

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

Azure 应用服务更新时是否需要更新 Web 应用以面向 .NET 4.8?

这篇文章询问何时可以在 Azure 应用服务上提供 4.8 支持: Azure 对 .NET 4.8 的支持

一位评论者询问是否也必须更新您的应用程序,这是一个很好的问题。

Microsoft 电子邮件抨击了所有应用服务客户,因此他们似乎非常认真地对待此更新,但如果需要完整更新,他们并没有留下太多时间(2020 年 7 月 14 日)。

问题是——我们必须更新到 4.8 吗?

azure .net-4.8

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

从 .NET Framework 4.8 移植到 .NET 5.0 .NET 5.0 中的 System.ServiceProcess.ServiceBase 功能?

我正在将应用程序从 .NET Framework 4.8 移植到 .NET 5.0。有没有办法将 System.ServiceProcess.ServiceBase 的功能引入 .NET 5.0?有没有可以替代 ServiceBase 的替代方案?有什么解决方法吗?

.net-5 .net-4.8

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