我正在开发一个小实用程序,我想更改连接到计算机的闪存驱动器上的卷标.我知道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) 我正在创建一个控件,在数据源中接收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) 在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) 首先,如果问题听起来很愚蠢,请原谅,但我是 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
我想开始使用 .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 预览版,一切都完美运行...但我需要它在我的开发电脑上运行!
。
我正在开发一个用户控件,现在(在工作结束时)我正面临着使它成为多语言的问题.我想我可以这样做:
Localizable = true控件,让VS生成我需要的默认语言的所有"记录". 所以使用MSDN中的代码
Assembly myAssembly = this.GetType().Assembly;
ResourceManager mgr = new ResourceManager("namespace.resource", myAssembly);
mgr.GetString(...)
Run Code Online (Sandbox Code Playgroud)
我的工作可以(轻松)完成.
但我有一些问题:
new ResourceManager(...)由于目标应用程序中的主命名空间更改,我是否可以使用?感谢大家
经过一些研究后我回答了一些问题:
再次感谢
我们使用下面的行来获取文件的上次访问日期和时间.
DateTime dtLastAccesstime = File.GetLastAccessTime(sFilePath);
Run Code Online (Sandbox Code Playgroud)
但是我们面临着奇怪的问题,上面的调用本身会修改Last访问时间.因此,我们有效地将当前时间作为上次访问时间.
有一天,我回答了一个关于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倍!!!)。
为什么?是什么原因
非常感谢。
我正在上课,所以我可以在扫雷时作弊,目前正在建立一些仿制药...但我有点卡住了.我想返回一个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) 在使用连接的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%正确,但我想你无论如何都理解它)
是否存在不应删除所有行的风险?
谢谢!