小编Mar*_*rco的帖子

设置Drive VolumeLabel

我正在开发一个小实用程序,我想更改连接到计算机的闪存驱动器上的卷标.我知道DriveInfo能够做到这一点,但我不知道如何实现它.如果有人有代码示例,我会非常感激.
这是我目前拥有的:

DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
    if (d.IsReady && d.DriveType == DriveType.Removable)
    {
        //set volume label here
    }
}
Run Code Online (Sandbox Code Playgroud)

c# drive driveinfo

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

在List <T>中转换IEnumerable

我正在创建一个控件,在数据源中接收DataSet或List

我如何在CreateChildControls事件中将IEnumerable转换为List?

protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding)
{
    if (dataSource is System.Data.DataSet)
    {
    }
    else if(dataSource is IList)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net ado.net entity-framework

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

隐藏的注册表项/值

在SO上阅读这篇文章后,我尝试编写一个小应用程序,我需要阅读并编写隐藏的注册表项/值.
使用NT Native API创建"隐藏"注册表值链接检查了Registry Manipulation.
第一个给了我一些工作,但它是用C++编写的,而第二个是Delphi项目运行良好.
我无法先转换,我可以尝试转换第二,但我需要找到一些代码来读取键/值.出于这个原因,我想知道是否有"准备好"并在C#中测试过.
我还下载了Proces Hacker v1.11源代码并使用它来部分转换Delphi示例,如下所示,但隐藏的注册表项是可访问的(而在Delphi中则不是)并且没有API来编写值.

static void Main(string[] args)
{
    string KeyNameBuffer = @"\Registry\User\S-1-5-21-3979903645-2167650815-2353538381-1001\SOFTWARE";
    string NewKeyNameBuffer = "Systems Internals";
    string HiddenKeyNameBuffer = "Can't touch me\0";
    string HiddenValueNameBuffer = "Hidden Value";

    // Apro la chiave di registro
    IntPtr SoftwareKeyHandle = CreateKey(KeyNameBuffer, IntPtr.Zero);
    if (SoftwareKeyHandle != IntPtr.Zero)
    {
        IntPtr SysKeyHandle = CreateKey(NewKeyNameBuffer, SoftwareKeyHandle);
        if (SysKeyHandle != IntPtr.Zero)
        {        
            // This key shouldn't be accessible, but it is            
            IntPtr …
Run Code Online (Sandbox Code Playgroud)

c# registry

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

错误 APT2263:在 &lt;manifest&gt; 中找到意外元素 &lt;queries&gt;

首先,如果问题听起来很愚蠢,请原谅,但我是 Xamarin.Forms 开发的新手。
我创建了我的第一个应用程序(付出了很多努力),并决定使用 AppCenter 向我的测试人员部署调试版本。
一切都很顺利,直到上个月,当我更新了软件包(依赖项),删除了一些已弃用的软件包并将更改推送到 GIT 时:从那一刻起,AppCenter 无法再编译我的应用程序,该应用程序已在我的电脑上正确编译。

如果我使用 v10.0 进行编译,则会出现以下错误:

/Users/runner/work/1/s/src/StamuraApp/StamuraApp.Android/StamuraApp.Android.csproj"(PackageForAndroid 目标)(1) -> (_CreateBaseApkWithAapt2 目标) -> /Users/runner/work/1/s /src/StamuraApp/StamuraApp.Android/obj/Release/android/manifest/AndroidManifest.xml(31): 错误 APT2263: 在 <manifest> 中找到意外元素 <queries>。[/Users/runner/work/1/s/ src/StamuraApp/StamuraApp.Android/StamuraApp.Android.csproj]

如果我尝试使用 v11.0 进行编译,则会收到错误:

/Users/runner/work/1/s/src/StamuraApp/StamuraApp.Android/StamuraApp.Android.csproj" (PackageForAndroid 目标) (1) -> (_ResolveSdks 目标) -> /Library/Frameworks/Mono.framework/External /xbuild/Xamarin/Android/Xamarin.Android.Common.targets(819,2): 错误 XA0000: 无法确定 'v11.0' 的 $(TargetFrameworkVersion) 的 API 级别。[/Users/runner/work/1/ s/src/StamuraApp/StamuraApp.Android/StamuraApp.Android.csproj]

所以我知道AppCenter无法使用v11.0,但我不知道如何处理该错误。我搜索了其他问题,大多数都在谈论Gradle版本,但我不知道如何在Visual Studio中设置它。
AppCenter 警告我

目前不支持使用 Android Gradle Plugin 4.1.0+。请使用任何早期版本。

但我不知道如何解决它。
我有办法解决这个问题吗?

编辑
我的清单是这样的:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="156" android:versionName="1.10.6" package="com.sefstamura.stamuraapp" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="29" />
    <uses-permission …
Run Code Online (Sandbox Code Playgroud)

xamarin.android xamarin.forms visual-studio-app-center visual-studio-2019

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

为什么我无法在 Visual Studio 2022 上编译 .NET MAUI 应用程序?

我想开始使用 .NET MAUI 进行编码,因此我将 VS2022 更新为“Version 17.1.0 Preview 6.0”
然后我按照https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation中的建议使用“Visual Studio Installer”安装了这些功能

在此输入图像描述

不幸的是,当我创建一个基本的 MAUI 应用程序时,我遇到了一些如下错误:

一个或多个目标框架不存在错误 NU1012 平台版本,即使它们已指定平台:net6.0-android

在开发人员命令行上,我尝试运行dotnet workload list并得到
android
ios
maui-android
maui-maccatalyst

如果我尝试安装其他一些工作负载(例如 maui 或 maui-windows),我会收到一条错误消息

无法下载清单 microsoft.net.workload.emscripten:在 NuGet 源https://api.nuget.org/v3/index.json上未找到 microsoft.net.workload.emscripten.manifest-6.0.200 ,C: \Program Files (x86)\Microsoft SDKs\NuGetPackages"

我也尝试过完全删除并重新安装 VS2022,但没有任何运气。
然后我尝试运行,maui-check但当它尝试下载建议:下载 .NET SDK (6.0.200)时,exe 无效并且任务失败。

最糟糕的部分:我尝试在另一台电脑上安装新的 VS2022 预览版,一切都完美运行...但我需要它在我的开发电脑上运行!

visual-studio-2022 .net-maui

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

进行多语言用户控制

我正在开发一个用户控件,现在(在工作结束时)我正面临着使它成为多语言的问题.我想我可以这样做:

  1. 对于UI部分,我可以设置Localizable = true控件,让VS生成我需要的默认语言的所有"记录".
  2. 然后我必须手动添加我用于动态菜单,消息等的所有字符串
  3. 最后,我需要为我需要的语言创建所有资源文件

所以使用MSDN中的代码

Assembly myAssembly = this.GetType().Assembly;
ResourceManager mgr = new ResourceManager("namespace.resource", myAssembly);
mgr.GetString(...) 
Run Code Online (Sandbox Code Playgroud)

我的工作可以(轻松)完成.
但我有一些问题:

  1. 当我从最终用户使用我的控件(生成的DLL)时,new ResourceManager(...)由于目标应用程序中的主命名空间更改,我是否可以使用?
    考虑我不知道最终用户将使用哪个命名空间.
  2. 当我创建语言资源时,VS会生成附属程序集:有没有办法可以将这些文件"集成"到目标DLL中?
    我想尽可能只部署一个文件......
  3. 有没有更好的方法来完成我的任务?
  4. 在开发多语言控件时,有什么我真的需要关心的吗?

感谢大家


更新:(感谢@ lak-b的一些建议)

经过一些研究后我回答了一些问题:

  1. 这是真的,我可以硬编码命名空间,当最终用户将我的控件放在他的表单上时,它不会被更改
  2. 好吧,似乎没有一个简单的方法.
    无论如何,这个SO帖子提供了一个很好的教训和一个很好的解
  3. ...不,对于这个问题,我还在等待有人告诉我一个更好/更简单的方法
  4. 从lak-b中指定了一些关键点.
    还有什么我不得不担心的吗?

再次感谢

c# multilingual user-controls winforms

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

.Net File.GetLastAccessTime更新文件的上次访问时间

我们使用下面的行来获取文件的上次访问日期和时间.

DateTime dtLastAccesstime = File.GetLastAccessTime(sFilePath);
Run Code Online (Sandbox Code Playgroud)

但是我们面临着奇怪的问题,上面的调用本身会修改Last访问时间.因此,我们有效地将当前时间作为上次访问时间.

c# lastaccesstime

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

为什么索引会使查询真正变慢?

有一天,我回答了一个关于SO 的问题(被认为是正确的),但是答案却使我充满怀疑。
不久,用户有了一个带有以下字段的表:

id INT PRIMARY KEY
dt DATETIME (with an INDEX)
lt DOUBLE
Run Code Online (Sandbox Code Playgroud)

查询SELECT DATE(dt),AVG(lt) FROM table GROUP BY DATE(dt)真的很慢。我们告诉他,(部分)问题是使用DATE(dt)作为字段和分组,但是db在生产服务器上并且无法拆分该字段。
因此(使用触发器)插入了另一个da DATE (with an INDEX)自动填充DATE(dt)的字段。查询SELECT da,AVG(lt) FROM table GROUP BY da要快一些,但是大约有800万条记录,大约需要60秒钟!!!
我在PC上进行了尝试,最后我发现,删除字段da查询上的索引仅用了7s,而使用DATE(dt)删除索引后只用了13s。
我一直认为用于分组的列索引可以真正加快查询速度,而不是相反(慢8倍!!!)。
为什么?是什么原因
非常感谢。

mysql

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

泛型问题

我正在上课,所以我可以在扫雷时作弊,目前正在建立一些仿制药...但我有点卡住了.我想返回一个int,但我如何转换它?

public T ReadMemory<T>(uint adr)
{
    if( address != int.MinValue )
        if( typeof(T) == typeof(int) )
            return Convert.ChangeType(MemoryReader.ReadInt(adr), typeof(T));
        else
            MessageBox.Show("Unknown read type");
}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

我是否需要加入查询的交易?

在使用连接的SQL查询期间,我是否需要使用事务?

我在考虑这样的事情:

Delete table1, table2, table3 
FROM table1 INNER JOIN table2 ON(...) 
LEFT JOIN table3 ON (...) 
WHERE table1.column = something...
Run Code Online (Sandbox Code Playgroud)

(我不知道语法是否100%正确,但我想你无论如何都理解它)

是否存在不应删除所有行的风险?

谢谢!

mysql sql

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