尝试修复错误并调试我的应用程序分解几个容器的问题,我经常编辑容器中的文件:
或者我完全懒惰并安装nano并直接在容器或编辑
我将文件停靠在容器中,编辑它,将其复制回来并重新启动容器
这些是进入容器构建的新内容之前的中间步骤,这比上面做的要花费更长的时间(当然这只是中间/摆弄).
现在我经常打破容器的启动程序,在破坏的情况下,它是节点脚本或python webserver脚本,两者通常都会因语法错误而失败.
有没有办法保存这些容器?由于他们没有开始,我不能将码头执行者带入他们,因此他们失去了我.然后我在构建输入中修复有问题的文件之后去rm/rmi/build/run路由.
我怎样才能编辑已停止的容器中的文件,或者将它们cp放入或在已停止的容器中启动shell - 允许我修复此容器的任何内容?
(这似乎有点像在远程计算机上工作并破坏网络配置 - 连接以这种方式"永远"丢失,如果存在则必须使用后备.)
如何从主机编辑Docker容器文件?看起来很相关,但已经过时了.
为了清理我的项目结构,我通过TFS Power Tools Shell-Extension(重命名/移动)将文件夹移动到另一个(新)文件夹中.
在新地点检查历史记录后,移动是唯一的条目.(我向上,向下尝试了一个文件夹,甚至是移动文件夹中的单个文件..同样的结果.)
我还在移动之前在文件夹的版本上添加了一些标签,因为我想要回到的代码有一些重要的状态.
那么......出了什么问题,我怎么能得到历史记录,或者至少再找出标签名称并查看这些版本?
我已将一个现有的node.js + express项目移动到VS,因为我现在更喜欢IDE而不是JetBrains(多年来使用过的VS,只是窥探了Webstorm).
我使用NTVS新项目 - >来自现有来源,所有文件都成功导入.
之后,我打开了项目的项目设置,并将node.exe参数设置为bin\www,启动文件为express.
当我按F5(调试)时,我得到我在开启命令提示符下放入www和app.js文件的console.log消息,看起来服务器正在运行(无法确认,我想调试,如果一切都是工作),但VS调试器再次直接退出,它也没有打开我选择进行调试的浏览器中的任何页面.
我的节点应用程序实际上是一个REST Web服务,所以我想用不同的参数测试不同的URL.
此外,我无法访问我指定的端口上的应用程序,虽然我可以从node.exe直接启动它,即使命令提示符仍然打开.
(我安装了NTVS和WebEssentials - 某些操作需要很长时间,但我将其归结为NTVS仍然是早期版本.)
问题:Visual Studio调试器如何与node.js应用程序保持连接,以便我可以使用断点并使用任何浏览器来连接和测试不同的URL?(即使是在启动期间打印的console.log上的断点也没有被触发.)
我对 Visual Studio 2019 进行了相当完整的安装,但缺少我在 Visual Studio 2017 中拥有的 dumpbin.exe 和 editbin.exe 等工具。(缺少含义:在开发人员命令提示符中不可调用,也无法使用类似工具在 HD 上找到一切。)
根据 MSDN,他们有一个名为“附加 MSVC 构建工具”的部分,但在查看 Visual Studio 安装程序时,我无法从中做出任何事情。(参见https://docs.microsoft.com/en-us/cpp/build/reference/editbin-reference?view=vs-2019)
我在安装过程中缺少哪个包/组件?
我想在循环中重复执行一个程序.
有时,程序崩溃,所以我想杀死它,以便下一次迭代可以正确启动.我通过超时确定这个.
我有超时工作,但无法获得程序的退出代码,我还需要确定其结果.
之前,我没有等待超时,但只是在Start-Process中使用了-wait,但是如果启动的程序崩溃,这会使脚本挂起.通过这种设置,我可以正确地获得退出代码.
我正在从ISE执行.
for ($i=0; $i -le $max_iterations; $i++)
{
$proc = Start-Process -filePath $programtorun -ArgumentList $argumentlist -workingdirectory $programtorunpath -PassThru
# wait up to x seconds for normal termination
Wait-Process -Timeout 300 -Name $programname
# if not exited, kill process
if(!$proc.hasExited) {
echo "kill the process"
#$proc.Kill() <- not working if proc is crashed
Start-Process -filePath "taskkill.exe" -Wait -ArgumentList '/F', '/IM', $fullprogramname
}
# this is where I want to use exit code but it comes in empty …Run Code Online (Sandbox Code Playgroud) 我想要一个中心位置从异常中提取信息,将我需要的所有信息设置为其消息参数,然后将该信息重新抛出为相同类型的异常.
更好的解决方案可能是在最终处理异常的地方执行此操作(并记录其消息),但是..我可以控制抛出异常的地方,而不是接收异常的地方记录其消息内容.
除了那个设计决定,并且假设message是一个readonly属性,我会(?)以某种方式创建一个新的Exception对象,有没有办法让新的异常对象与原始异常对象相同?
这是我的代码,它不编译 - 它偶然发现了抛出线(我尝试动态转换对象).
public static void RethrowExceptionWithFullDetailInMessage(string msg, Exception ex)
{
Exception curEx = ex;
int cnt = 0;
while (curEx != null)
{
msg += "\r\n";
msg += cnt++ + " ex.message: " + curEx.Message + "\r\n";
msg += "Stack: " + curEx.StackTrace;
curEx = curEx.InnerException;
}
object newEx = Convert.ChangeType(new Exception(msg), ex.GetType());
throw (ex.GetType())newEx;
}
Run Code Online (Sandbox Code Playgroud)
做这个
throw (Exception)newEx;
Run Code Online (Sandbox Code Playgroud)
保留类型?(它汇编.)
Convert.ChangeType是否确保我得到了正确类型的异常?
我正在开发一个项目,在这个项目中,有必要模拟按键以在不同的应用程序中引起特定的行为.
使用正在导入的keybd_event函数(可能有更好的方法,但它工作正常),一切运行良好.
现在我想为所有的numpad添加特定的支持.
在这里查看http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx或在System.Windows.Input.Key命名空间中,我可以轻松找到Num0的键. Num9,以及NumLock.但是......我找不到Num /,Num +,NumEnter等的任何东西.
我写了一个快速的应用程序来捕获keydown事件,输出事件参数,并得到一些有趣的结果:
e.KeyCode NumLock e.KeyData NumLock e.KeyValue 144 e.Modifiers None
e.KeyCode Divide e.KeyData Divide e.KeyValue 111 e.Modifiers None
e.KeyCode Multiply e.KeyData Multiply e.KeyValue 106 e.Modifiers None
e.KeyCode Subtract e.KeyData Subtract e.KeyValue 109 e.Modifiers None
e.KeyCode Add e.KeyData Add e.KeyValue 107 e.Modifiers None
e.KeyCode NumLock e.KeyData NumLock e.KeyValue 144 e.Modifiers None
e.KeyCode NumLock e.KeyData NumLock e.KeyValue 144 e.Modifiers None
e.KeyCode Divide e.KeyData Divide e.KeyValue 111 e.Modifiers None
e.KeyCode Multiply e.KeyData Multiply e.KeyValue 106 …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序之间有一个.dll分层系统,其中最低级别有一个提供某些功能的类 - 这个类的实例可以通过GetClass()函数接收,然后我可以访问它的属性(基本上是一个集合改变对象的信息).
现在我注意到,当我想从下一个更高级别.dll访问该信息时,编译器抱怨我没有引用较低级别的.dll(定义类的那个) - 实际上我想要避免,到在我的架构中有一个很好的分层结构.
怎么解决这个问题?我可以重新公开引用的类型吗?如果我想要完全相同的功能,我真的必须写一个我自己的包装器吗?或者我甚至需要再次引用低级别.dll?
(如果有帮助:
dll1: class myClass, myClass GetMyClass()
dll2: myClass GetMyClass()
exe: how to access result from calling GetMyClass (dll2) without referencing dll1?
Run Code Online (Sandbox Code Playgroud)
)
我想在一个函数中创建一个名为lambda的函数,这样我就可以在同一个函数中重复调用它.
我过去常常同步/没有任务
Func<string, bool> pingable = (url) => return pingtest(url);
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我想将pingable函数作为一个任务调用,所以我需要一个Task返回类型.
这是我被困的地方.
对于以下所有,我收到编译错误:
* Func<string, Task<bool>> pingable = (input) => { return pingtest(url); };
* Task<bool> pingable = new Task<bool>((input) => { return pingtest(url); });
Run Code Online (Sandbox Code Playgroud)
我可以正常声明函数,但是我不能把它称为任务:
Func<string, bool> pingable = (input) => { return pingtest(url); };
var tasks = new List<Task>();
* tasks.Add(async new Task(ping("google.de")));
Run Code Online (Sandbox Code Playgroud)
我用*标记的所有行都会产生copmile错误.
http://dotnetcodr.com/2014/01/17/getting-a-return-value-from-a-task-with-c/似乎对解决方案有一个暗示,但那里的样本不允许提供输入参数.(从那里取样并简化:)
Task<int> task = new Task<int>(obj =>
{
return obj + 1;
}, 300);
Run Code Online (Sandbox Code Playgroud)
如何在C#中创建和调用命名的任务lambdas,我想在函数而不是类级别声明它们.
我想要命名的lambda以便多次调用它(在这种情况下是几个url).
您询问代码后编辑/更新:
Func<string, Task<bool>> ping = url => …Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×2
docker ×2
async-await ×1
automation ×1
bash ×1
build-tools ×1
casting ×1
debugging ×1
dll ×1
exception ×1
exit-code ×1
func ×1
history ×1
javascript ×1
keyboard ×1
label ×1
lambda ×1
layer ×1
node.js ×1
ntvs ×1
port ×1
powershell ×1
reference ×1
sendkeys ×1
tfs ×1
tfs2010 ×1
throw ×1
wait ×1