我在 .NetCore 8 中使用 Winform 的 C++ CLR DLL 中收到此警告警告 C4642:“IHandle”:无法导入泛型参数“THandle”的约束警告 C4642:“HandleRef”:无法
我在 .NetCore 8 中使用 Winform 的 C++ CLR DLL 中收到此警告
warning C4642: 'IHandle': could not import the constraints for generic parameter 'THandle'
warning C4642: 'HandleRef': could not import the constraints for generic parameter 'THandle'
问题是,即使是一个非常干净的项目,这个警告也只是在默认代码中存在。
以下是我尝试重现警告的步骤和方法。
System,
System.Data
System.Drawing
System.Windows.Forms
System.Xml
并替换为
<FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" />
构建并清理,然后出现警告。
事实上,这只是一个单元测试,我们移植的实际项目最初是一个 Winform C++ CLR 应用程序,现在构建为一个 DLL 并有一个 C# 主机以使其与 .netcore 8 一起工作。
可以成功编译并打开。
但
我们有很多这样的警告,因为到处都有大量的表格。
有什么想法可以解决这个问题吗,或者我们应该抑制这个警告?
用户无权访问 Azure SQL 服务器,这可能是导致 login failed for user
错误的原因。您可以按照以下步骤使用系统分配的托管身份验证从 Azure Web API 连接 Azure SQL 服务器:
在 Appsetting.json 中使用以下格式的连接字符串:
"ConnectionStrings": {
"QuotesDatabase": "Server=tcp:<servename>.database.windows.net,1433; Database=<databasename>;" }
使用以下代码进行连接。
var connectionString = Configuration.GetConnectionString("<connectionstringname>");
services.AddTransient(a =>{
var sqlConnection = new SqlConnection(connectionString);
var credential = new DefaultAzureCredential();
var token = credential
.GetToken(new Azure.Core.TokenRequestContext(
new[] { "https://database.windows.net/.default" }));
sqlConnection.AccessToken = token.Token;
return sqlConnection;
根据需要将活动目录管理员设置为 SQL 服务器,如下所示:
选择 Azure 服务身份验证的管理员帐户来检索令牌凭据,如下所示:
在 Azure 应用服务的状态下启用系统分配的管理标识。
使用管理员身份登录 SQL Server,将用户添加到数据库并为用户分配角色
create user [<appName>] from external provider;
alter role db_datareader add member [<appName>];
alter role db_datawriter add member [<appName>];
数据库将成功连接到应用程序,如下所示:
欲了解更多信息,你可以参考类似的 SO 线程 .