C#:我想像文件路径一样将消息传递给我的表单应用程序,比如控制台应用程序,我该怎么做?
我被告知我需要找到我的主要方法来添加string [] args,但我不知道哪个是Windows窗体.我的主要方法是哪种C#windows窗体应用程序?
我有以下JavaScript代码作为字符串文字:
var $Page = new function()
{
var _url= 'http://www.some.url.com';
this.Download = function()
{
window.location = _url;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法_url从C#代码中获取变量的值?也许是一个开源库?我使用正则表达式做了这个,但我希望有一个更优雅的方式.
我有一个上传图像的小服务,我这样使用它:
ImageInfo result = await service.UploadAsync(imagePath);
Run Code Online (Sandbox Code Playgroud)
我想要做的是显示进度对话框,但前提是上传操作需要超过2秒.上传完成后,我想关闭进度对话框.
我使用Task/ContinueWith做了一个粗略的解决方案,但我希望有一种更"优雅"的方式.
我怎样才能实现这个目的async/await?
我正在查看vsjitdebugger.exe使用Process Monitor的注册表访问,我注意到有时它会以下列方式查询注册表(一些信息省略):
HKCU\Software\Classes\CLSID\{some-guid} NAME NOT FOUND Desired Access: Read
...
HKCU\Software\Classes\CLSID\{some-guid}\TreatAs NAME NOT FOUND Desired Access: Query Value
...
HKCU\Software\Classes\CLSID\{some-guid}\InprocServer32 NAME NOT FOUND Desired Access: Read
...
HKCR\CLSID\{24E669E1-E90F-4595-A012-B0FD3CCC5C5A}\InprocServer32 SUCCESS Desired Access: Read
Run Code Online (Sandbox Code Playgroud)
有关MSDN上的TreatAs的信息表明,它允许为另一个将被调用而不是原始服务器的COM服务器指定GUID.
我无法找到关于此密钥的更多信息,并且我无法在我自己的COM对象上使用它:我有两个不同的相同COM对象的实现(在2个单独的DLL中,有2个单独的GUID) ,当我的进程通过GUID创建对象时,我希望它创建另一个对象(通过TreatAs中指定的GUID).不幸的是,似乎Windows立即尝试查询HKCU\Software\Classes\CLSID\{my-guid}\InprocServer32,而不是首先寻找TreatAs.
我的问题基本上是关于TreatAs的规则,何时以及如何被查询?
我有一个事件(可能)每秒触发一次(计时器滴答).我想做的是EventArgs每60秒采取最后一个滴答值(如果在这60秒内有新的滴答).我尝试过这样的事情:
Observable.FromEventPattern(
h => myThing.SomeEvent += h,
h => myThing.SomeEvent -= h)
.Throttle(TimeSpan.FromSeconds(60))
.TakeLast(1)
.Do(p => // do something with p);
Run Code Online (Sandbox Code Playgroud)
不幸的是我从来没有采用这种Do方法,而且我不确定我做错了什么?
抱歉,如果这是完全错误的,我第一次使用Rx :)
编辑:按照下面的建议,我换Do到Subscribe,但我还没有得到任何结果,如果我使用Throttle.我应该使用它吗?
我有一个将文件写入临时目录的进程.正在写入文件而没有共享读取访问权限,因此如果有人在写入文件时尝试读取该文件,IOException则会抛出该文件,这很好.
在一些罕见的情况下,我似乎UnauthorizedAccessException在尝试阅读此文件时得到了.我相当肯定(从日志中)文件没有写入,但我看不到任何其他原因我无法访问它.
此外,该过程从Visual Studio扩展运行,这意味着它具有与父进程(Visual Studio本身)相同的权限.
以下是我尝试打开文件的方法:
new FileStream(cacheFileName, FileMode.Open, FileAccess.Read, FileShare.Read);
Run Code Online (Sandbox Code Playgroud)
有时候,这条线会抛出一条线UnauthorizedAccessException.有什么想法吗?
我们有一个Visual Studio扩展,目前安装有MSI,因为我们需要在安装后执行某些任务(ngen,注册某些COM服务器等).在安装结束时,我们运行devenv.exe /setup(更具体地说,devenv.exe /setup /nosetupvstemplates使其快一点)在Visual Studio 2012及更高版本中注册扩展(在2010年不需要此步骤,因为VS2010将在每次启动时重建扩展缓存) .
我们目前正在寻求部分VSIX安装,但存在一些问题:
我们有一定的文件夹结构(附加的捆绑工具).我无法在VSIX包中找到包含任意文件夹和文件的选项.这可能吗?
我们试图避免使用devenv.exe /setup,因为在极少数情况下,这可能会导致扩展无法加载(如MSDN论坛上的Remco Mulder所详述).
我们仍然需要执行"安装后"操作,目前VSIX无法实现.
由于之前的'sins',我们硬编码了一些路径来使用CompanyName\ProductName\VersionVSIX软件包过去遵循的格式,但似乎VSIX randomy现在生成一个文件夹名称(正如Jason在下面的答案中提到的那样).
所以我真正喜欢的是能够安装一个"解压缩的"VSIX包 - 让MSI安装程序在磁盘上创建文件结构(在正确的位置%VSInstallDir%\Common7\IDE\Extensions\Company\Product\Version),然后以某种方式让VSIX使用该.vsixmanifest文件来注册Visual Studio中的扩展.
(初始挖掘到扩展管理器API示出了有一个名为方法CreateInstalledExtension中ExtensionManagerService,在一个路径花费vsixmanifest,组装时Microsoft.VisualStudio.ExtensionManager.Implementation.dll,但不幸的是它是内部).
因此,如果不使用API hackery,有没有其他方法可以在Visual Studio(2012及更高版本)中实际安装扩展,而不使用devenv /setup?
windows-installer visual-studio vsix visual-studio-extensions
如果自上次推送以来我对默认分支进行了多次提交,是否可以返回,并将这些提交移动到单独的命名分支中?
也就是说,我有:
A--B--C--D
Run Code Online (Sandbox Code Playgroud)
而且我要:
A
\
B--C--D
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的?
我正在努力做一些事情:
A.CallTo(() => fakeTimer.Start()).Invokes(() =>
fakeTimer.Elapsed += Raise.With<ElapsedEventArgs>(ElapsedEventArgs.Empty).Now);
Run Code Online (Sandbox Code Playgroud)
根据这个答案,它fakeTimer是一个假的ITimer,一个包装器接口.
显然这不起作用,因为我无法在Experssion Tree中进行任务.
我实际上要实现的是Start在调用方法时模拟提升计时器事件.这样我就可以断言Start确实发生了一次调用.
任何(替代)想法?
编辑我是个白痴,错是我自己的!我不小心添加了一个额外的A.CallTo,我不应该.我没有删除这个问题,而是继续授予PatrikHägne他的合法声誉:)
我正在尝试从Jenkins运行PowerShell脚本,但它似乎完全忽略了执行策略!这可以通过直接执行powershell.exe或使用PowerShell插件来实现
附加信息:
Jenkins作为Windows服务运行(使用本地系统帐户,非交互式).确实连接到该服务器并检查执行策略RemoteSigned:
PS C:\> whoami
nt authority\system
PS C:\> Get-ExecutionPolicy
RemoteSigned
PS C:\>
Run Code Online (Sandbox Code Playgroud)
但是,在运行Jenkins构建时,情况并非如此.这是在Get-ExecutionPolicy -List构建步骤中执行的输出:
d:\workspace\test-job>powershell Get-ExecutionPolicy -list
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
Run Code Online (Sandbox Code Playgroud)
我也尝试从构建步骤中明确设置它,没有.
我错过了什么?
c# ×5
.net ×3
arguments ×1
async-await ×1
branch ×1
clsid ×1
com ×1
command-line ×1
events ×1
exception ×1
fakeiteasy ×1
javascript ×1
jenkins ×1
mercurial ×1
mocking ×1
parsing ×1
powershell ×1
registry ×1
tortoisehg ×1
vsix ×1
windows ×1
winforms ×1