我一直在做一些调查,看看我们如何创建一个贯穿树的多线程应用程序.
为了找到如何以最佳方式实现这一点,我创建了一个运行在我的C:\ disk中的测试应用程序并打开所有目录.
class Program
{
static void Main(string[] args)
{
//var startDirectory = @"C:\The folder\RecursiveFolder";
var startDirectory = @"C:\";
var w = Stopwatch.StartNew();
ThisIsARecursiveFunction(startDirectory);
Console.WriteLine("Elapsed seconds: " + w.Elapsed.TotalSeconds);
Console.ReadKey();
}
public static void ThisIsARecursiveFunction(String currentDirectory)
{
var lastBit = Path.GetFileName(currentDirectory);
var depth = currentDirectory.Count(t => t == '\\');
//Console.WriteLine(depth + ": " + currentDirectory);
try
{
var children = Directory.GetDirectories(currentDirectory);
//Edit this mode to switch what way of parallelization it should use
int mode = 3;
switch (mode) …Run Code Online (Sandbox Code Playgroud) 在我的机器上安装Visual Studio 2015 Update 1之后,我看到我的一些单元测试失败了.在做了一些调查后,我能够将问题减少到这行代码:
Expression<Func<GameObject, bool>> expression = t => t.X == 0 && t.Y == 0 && t.GameObjectType == GameObjectType.WindMill;
Run Code Online (Sandbox Code Playgroud)
将鼠标悬停在表达式变量上时,Visual Studio版本中的结果会有所不同:
正在对枚举进行比较的逻辑(ServiceStack.OrmLite代码中的某个地方)现在采取了不同的行为,最终导致枚举不被识别为枚举,从而导致单元测试失败.
我能够使用以下代码重现该问题:
class Program
{
static void Main(string[] args)
{
var gameObjects = new List<GameObject> {
new GameObject { X = 0, Y = 0, GameObjectType = GameObjectType.WindMill },
new GameObject { X = 0, Y = 1, GameObjectType = GameObjectType.Pipe },
new GameObject { X = 0, Y = …Run Code Online (Sandbox Code Playgroud) 问题
我正在创建一个应用程序.在这个应用程序中,我正在使用序列化Func.这种方式不知何故使我的应用程序崩溃了.
崩溃毫无例外让我对wtf感到好奇,所以我做了一些深度潜水,经过一些挖掘后终于发现Newtonsoft.Json中的某个地方List.Contains正在发生,然后对2个属性执行等于检查.
显然在此等于检查会导致无限循环,从而导致堆栈溢出异常.
仅使用C#重现问题
Expression<Func<string, int>> expr = (t) => t.Length;
Func<string, int> exprCompiled = expr.Compile();
var aa = exprCompiled.Method.Module;
var bb = exprCompiled.Method.Module.Assembly;
//This code results in either an infinite loop or a Stackoverflow Exception
var tempresult = aa.Equals(bb);
Console.WriteLine("This code is never executed");
Run Code Online (Sandbox Code Playgroud)
使用Newtonsoft.Json重现问题
Expression<Func<string, int>> expr = (t) => t.Length;
Func<string, int> exprCompiled = expr.Compile();
//This code results in either an infinite loop or a Stackoverflow Exception
var res = JsonConvert.SerializeObject(exprCompiled);
Console.WriteLine("This code is …Run Code Online (Sandbox Code Playgroud) 我刚刚创建了一个干净的 VueJS 新项目,但无法加载 JSON 文件。
为了便于复制,我用我的问题创建了一个 Github 存储库:https : //github.com/devedse/VueJSImportJsonFile
在 Home.vue 页面中,我试图让 Json 加载工作。( https://github.com/devedse/VueJSImportJsonFile/blob/master/src/views/Home.vue )
当您在 VSCode 中打开此解决方案时,以下行显示错误:
import theJson from '@/assets/hi.json';
Run Code Online (Sandbox Code Playgroud)
Can't find module '@/assets/hi.json'
我已经搜索了所有 stackoverflow 并尝试了以下帖子中的所有内容:
https://github.com/chybie/ts-json
好的,我现在设法npm run serve通过将其添加到 tsconfig.json来使其在运行时正常工作:
{
"compilerOptions": {
"resolveJsonModule": true
}
}
Run Code Online (Sandbox Code Playgroud)
然而 VSCode 中的错误似乎仍然存在。有没有办法解决这个问题?
介绍
我目前正在尝试使用 dotnet 为多个平台自动构建 docker 映像。
我读过,最好的方法是使用 docker buildx 命令。
我尝试为arm32、arm64和x64进行设置。x64 和 arm64 的构建使用此命令可以正常工作,但是我遇到了 arm32 的问题。这是我正在执行的命令:
docker buildx build -f DeveMazeGeneratorCore.Web/Dockerfile --platform linux/arm,linux/arm64,linux/amd64 -t devedse/devemazegeneratorcoreweb .
Run Code Online (Sandbox Code Playgroud)
错误
我得到的错误是:
#17 [linux/arm/v7 build 5/8] RUN dotnet restore "DeveMazeGeneratorCore.Web/D...
272#17 0.254 A fatal error occurred, the folder [/usr/share/dotnet/host/fxr] does not contain any version-numbered child folders
273#17 ERROR: executor failed running [/bin/sh -c dotnet restore "DeveMazeGeneratorCore.Web/DeveMazeGeneratorCore.Web.csproj"]: exit code: 131
Run Code Online (Sandbox Code Playgroud)
我已经在这里读过(https://github.com/dotnet/dotnet-docker/issues/1537#issuecomment-615269150),您显然无法在 64 位系统上构建 arm32 映像。有人可以解释一下为什么会这样吗?我的意思是我们使用 QEMU 来模拟arm,对吗?
我可以通过创建一个新的 dockerfile 来解决这个问题,该文件基于 64 位映像构建,然后创建一个 arm32 …
我一直在尝试通过将一些文件移动到 git LFS 来减小 Git 存储库的大小。再加上几个 100 个命令,这里我们的文件位于 git LFS 中,并且我的 git 提交中不再有这些文件的历史记录。
然而,每当我克隆存储库时,我仍然会下载大约 3GB 的对象。我通过在 Visual Studio Team Services 中创建一个新存储库来解决这个问题,在本地修剪和垃圾收集我的存储库,然后推送到那里后,它减少到 300mb。(在这篇文章中本地执行此操作的命令:Git:什么是悬空提交/blob 以及它们来自哪里?)
但是我无法想象您总是必须删除/重新创建完整的存储库才能删除悬而未决的提交。
我还尝试过执行 git init,然后将其推送到现有存储库上,但它只会进一步增加对象数量。
对于也遇到类似问题的任何人,这些是我执行的用于创建新存储库而不需要悬空提交的命令,但是我想了解如何在现有存储库中执行此操作而不必删除它:
git clone https://avavedse.visualstudio.com/Test/_git/TestRepository
cd blahblah
git reflog expire --expire=now --all
git gc --prune=now
git remote add newrepo https://avavedse.visualstudio.com/Test/_git/TestRepositoryNewEdition
git push newrepo
Run Code Online (Sandbox Code Playgroud) 我想创建一个 TamperMonkey 脚本来解析来自 EtherScan.io 的一些 ABI 数据(参见:https : //github.com/devedse/DeveEtherscanParser)。
我现在做了一些穷人 ABI 解码,但我发现有一个库可以做到这一点:https : //github.com/jacogr/ethabi-js
我将如何将此 NPM 包包含到我的 tampermonkey 脚本中?
我一直在研究C#迷宫发生器一段时间,它可以生成类似128000x128000像素的迷宫.所有内存使用已经优化,因此我目前正在考虑加速这一代.
我发现一个问题(更多的是关注点)是以下(只是一些示例代码来说明问题):
当pixelChanged为null时,此代码在我的机器上运行大约1.4秒:
public void Go()
{
for (int i = 0; i < bitjes.Length; i++)
{
BitArray curArray = bitjes[i];
for (int y = 0; y < curArray.Length; y++)
{
curArray[y] = !curArray[y];
GoDrawPixel(i, y, false);
}
}
}
public void GoDrawPixel(int i, int y, Boolean enabled)
{
if (pixelChanged != null)
{
pixelChanged.Invoke(new PixelChangedEventArgs(i, y, enabled));
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码实际运行速度快0.4秒
public void Go()
{
for (int i = 0; i < bitjes.Length; i++)
{
BitArray curArray = bitjes[i];
for …Run Code Online (Sandbox Code Playgroud) 介绍
我创建了一个Windows Universal项目,我希望能够使用VSTS任务自动发布到Microsoft商店.
由于该应用程序仅用于公司内部使用,我将其价格设置为免费并已手动发布.接下来,我们已将其分配给一些内部公司Microsoft帐户,以确保他们是唯一可以下载它的人.
我采取的步骤
首先,我开始将VSTS扩展安装到我的VSTS帐户:https://marketplace.visualstudio.com/items ? item = MS-RDX -MRO.windows-store-publish
之后,我松散地遵循该URL上描述的步骤.(我之所以松散地遵循它们,是因为有些步骤似乎不是最新的).例如,从Developer门户创建新应用程序需要多个重定向URL.由于我们不需要重定向URL(此应用程序仅用于VSTS的远程连接),我刚刚开始输入随机URL.可能由于我缺乏知识,我没有找到任何可以接受的东西.因为这不起作用,我在VSTS中创建了一个新的应用程序,我刚刚输入www.google.nl作为重定向URL,实际上工作了(在发现那个显然你需要在那里创建'WebApp'而不是"原生"应用程序,因为您只能为WebApp创建密钥.但我认为这是一个不同的主题:).
无论如何,经过一些摆弄我设法建立一个新的"Windows开发中心连接".
VSTS的外观
问题
每当我现在使用VSTS任务部署我的版本时,我遇到以下日志/错误:
步骤我试图重新调解问题
如VSTS任务martketplace帖子中所述,您还可以添加一些有关产品价格的元数据.我确实玩过这个并添加了以下元数据文件:MetaDataFolder\MetaData\en-us\baseListing\metadata.json
{
"pricing": {
"priceId": "Free"
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这确实没有改变任何内容,执行发布时的错误消息仍然是相同的.
手动执行提交(使用从Automated Build生成的包)确实可以正常工作.
题
所以基本上我的问题是,如果有人有解决这个问题的方法吗?
编辑1
根据'Eddie Chen - MSFT'的要求,这里是开发中心价格设置的屏幕截图:

关于你为"强制更新"输入的号码的问题,我输入了:0
使用debug:true进行发布时,我看到以下输出:
2018-01-31T13:07:30.9934874Z ##[section]Starting: Publish $(System.DefaultWorkingDirectory)/AvaNuccyApp/drop/*.appxupload
2018-01-31T13:07:30.9940374Z ==============================================================================
2018-01-31T13:07:30.9940708Z Task : Windows Store - Publish
2018-01-31T13:07:30.9941014Z Description : Publish your app to the Windows Store
2018-01-31T13:07:30.9941547Z Version : 0.10.16
2018-01-31T13:07:30.9941873Z Author : Microsoft Corporation
2018-01-31T13:07:30.9942144Z Help :
2018-01-31T13:07:30.9942471Z ==============================================================================
2018-01-31T13:07:31.3440628Z ##[debug]agent.workFolder=C:\agent\_work …Run Code Online (Sandbox Code Playgroud) 我目前正在对Moq框架进行扩展,以模拟非虚拟方法的实现。目前,我已经通过获取原始方法的方法句柄并将其与用户定义的Func的指针进行交换来进行此工作。
我仍然遇到的一个问题是,当我在Moq内部代码中(在使用泛型的类中)创建Func时,遇到了RuntimeHelpers.PrepareMethod的问题。(在执行指针交换之前,需要准备Func)。
当我在普通类(例如Program)中创建完全相同的Func时,一切正常。
进一步调查该问题可以追溯到调用类是否具有通用参数。
抛出异常:
An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll
Additional information: The given generic instantiation was invalid.
Run Code Online (Sandbox Code Playgroud)
我在以下代码块中隔离了该问题:
class Program
{
static void Main(string[] args)
{
new WithoutGeneric().GoExecute();
new WithGeneric<string>().GoExecute();
}
}
public class WithoutGeneric
{
public void GoExecute()
{
//Works fine
StaticMethods.PrepareThisFunc(() => "Test");
}
}
public class WithGeneric<T>
{
public void GoExecute()
{
//Breaks
StaticMethods.PrepareThisFunc(() => "Test");
}
}
public static class StaticMethods
{
public static void PrepareThisFunc(Func<string> theFunc)
{
RuntimeHelpers.PrepareMethod(theFunc.Method.MethodHandle);
}
} …Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以轻松计算具有特定数量的设置位的所有数字的序列?
例如,我想将所有 2 位数字设置为最多 4 位:
3: has 2 bits set to true
5: ,,
6: ,,
9: ,,
10: ,,
12: ,,
Run Code Online (Sandbox Code Playgroud)
有没有办法在不手动计算位数的情况下确定这些数字?
编辑:数字的顺序并不真正相关。我确实想知道获取所有这些的最快方法,尽管对于特定的位数设置和最大位数。(我不需要可以确定此序列中第 n 个数字的方法)
Edit2:我想要的原因是能够像这里完成的那样获得列表中元素的组合:值列表的所有可能的组合。此解决方案将提供所有组合,其中我只想要具有 8 个唯一值的组合。
c# ×6
.net ×3
javascript ×2
performance ×2
reflection ×2
.net-4.6 ×1
azure-devops ×1
buildx ×1
docker ×1
foreach ×1
git ×1
git-clone ×1
git-lfs ×1
il ×1
json.net ×1
math ×1
npm ×1
tampermonkey ×1
typescript ×1
vue.js ×1