一个类似的问题最近已经问过,但就是不一样.
Mercurial网站有一个详细的页面,列出了4种不同的选项,可以让Mercurial和Subversion进行互操作.
我想知道是否有人在那里尝试了其中一个或多个,并且可能涉及任何真正好或非常糟糕的经历.关于hgsubversion下载的说明如下
hgsubversion是Mercurial的扩展,允许使用Mercurial作为Subversion客户端.现在还没有准备好用于生产.如果你已经准备好攻击它,你应该只使用它,并潜入Mercurial和/或Subversion的内部.
这就像邀请我一样说"放弃希望,所有进入这里的人"或"闯入者将被捕".所以我只是想知道这个或任何其他替代方案是否值得为那些没有太多时间来破解的人尝试.
当我使用DotNet1.1时,我遇到了C#的这个问题
问题是这个.我有一个非托管的DLL,它有一个函数,它接受一个函数指针(以及其他参数).当我在C#代码中声明DLLImport时,我传递了一个委托.但是C#中的委托具有stdcall调用约定,而非托管函数需要cdecl函数指针.因此,我天真的做法导致了崩溃.然后我找到了以下内容:http://www.codeproject.com/KB/cs/cdeclcallback.aspx有些人编写了一个优秀的库,可以根据我的理解改变代理的调用约定,MSIL-hacking.事情进展顺利,直到......
我迁移到VS2008和新版本的.NET.在此版本下,上述库不起作用.我不是真正的C#或.NET专家,说实话,我几乎不了解他的库做了什么(虽然它是开源的),所以我甚至不想尝试将它适应新的.NET.但是,我希望更新版本的C#可以为我的问题提供更好的解决方案.
那么,SO专家,请帮我解决臀部疼痛:)
以下F#代码声明了基类和后代类.基类有一个带有默认实现的虚拟方法'Test'.后代类重写基类方法,并添加新的重载'Test'方法.此代码编译良好,并且在访问后代'Test'方法时不会出现任何问题.
F#代码:
module OverrideTest
[<AbstractClass>]
type Base() =
abstract member Test : int -> int
default this.Test x = x + 1
type Descendant() =
inherit Base()
override this.Test x = x - 1
member this.Test (x, y) = x - y
Run Code Online (Sandbox Code Playgroud)
但是,尝试从C#调用后代的'Test'覆盖会导致编译错误:
var result = td.Test(3); < - 方法'Test'没有重载需要1个参数
完整的C#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Client
{
class Program
{
static void Main(string[] args)
{
var td = new OverrideTest.Descendant();
var result = td.Test(3);
Console.WriteLine(result); …Run Code Online (Sandbox Code Playgroud) 我试着按照如何在C#教程中打开Excel文件,即在Com选项卡上添加了一个引用Microsoft Office 14.0 Object Library并尝试编译代码:
using Excel = Microsoft.Office.Interop.Excel;
//...
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlApp = new Excel.ApplicationClass();//error here
//...
Run Code Online (Sandbox Code Playgroud)
并且面临编译错误,说
没有为Microsoft.Office.Interop.Excel.ApplicationClass类型定义构造函数.
我错过了什么?
在浏览互联网之后,看起来可以在C#和Matlab之间进行互操作.我想知道是否有人取得了成功以及他们做了什么.如果可能的话,不使用COM就把它拉下来.谢谢你的时间.
我刚刚开始PythonInterpreter在我的Java类中使用from,它工作得很好!但是,如果我尝试包含python模块(re,HTMLParser等),我收到以下异常(for re):
Exception in thread "main" Traceback (innermost last): File "", line 1, in ? ImportError: no module named re
我怎样才能让jython jar中的类"看到"python可用的模块?
我们正在开发WPF中的UI控件,以便在现有的Windows Forms/MFC应用程序引擎(Rhino 3D)中使用.
应用程序引擎公开了创建"Dockbar"的能力,它实际上允许您将Windows窗体控件放在可以停靠到Engines接口的子窗口中.
我试图将一个简单的WPF TextBox放在一个ElementHost控件中,该控件被添加到Dockbar中.乍一看似乎工作得很好; 但在尝试输入TextBox后,只有某些序列实际显示在TextBox中.该DELETE,BACKSPACE,COPY,PASTE,并选择文本的工作.如果您键入AZ,1-9等,则这些键不会显示.
我有SCOURED网,并听说过,ElementHost.EnableModelessKeyboardInterop()但这仅适用于从表单创建的WPF Windows.我只创建WPF UserControls并在ElementHost控件中托管它们.
我看到一篇关于Dispatcher.Run()的帖子,它有点工作但是打破了表单的其余部分:
System.Windows.Threading.Dispatcher.Run();
Run Code Online (Sandbox Code Playgroud)
该PreviewKeyUp,PreviewKeyDown,KEYUP和的KeyDown事件的所有火上的文本框,但很可惜没有文字在文本框中显示出来.
我对Windows消息了解不多,但是使用WinSpector我注意到没有WM_GETTEXT消息来自TextBox(如果它们甚至应该是我不知道的话).
我还创建了一个新的Windows窗体项目,并在那里做了同样的事情,它工作正常,所以它必须是如何在Rhino 3D引擎中创建和停靠窗口的问题.
以下是不起作用的示例代码:
ElementHost el = new ElementHost();
System.Windows.Controls.TextBox t = new System.Windows.Controls.TextBox();
t.Width = 100;
t.Text = "TEST";
el.Child = t;
panel1.Controls.Add(el);
Run Code Online (Sandbox Code Playgroud) 我已经在WPF应用程序上工作了一段时间,现在是时候将CHM格式的帮助文档附加到它了.
可惜!HelpProvider是在Winforms中显示CHM文件的标准方法,它已经神奇地消失了,并且在WPF中没有对应物.我一直在尝试使用WindowsFormsHost来生成一个新的控件,所以我实际上可以显示帮助,但实质上它只是抓住了整个UI的控制权.
更多细节:我有一个我想要的菜单项,当点击时,打开CHM文件.
首先我设置了WindowsFormsHost ......
host = new System.Windows.Forms.Integration.WindowsFormsHost();
helpForm = new System.Windows.Forms.Control();
host.Child = helpForm;
host.Visibility = System.Windows.Visibility.Hidden;
this.grid1.Children.Add(host);
hp = new System.Windows.Forms.HelpProvider();
hp.HelpNamespace = "Somehelpfile.chm";
hp.SetHelpNavigator(helpForm, System.Windows.Forms.HelpNavigator.TableOfContents);
Run Code Online (Sandbox Code Playgroud)
然后我说,瞧,揭示自己.
private void Help_Click(object sender, RoutedEventArgs e)
{
host.Visibility = Visibility.Visible;
helpForm.Show();
hp.SetShowHelp(helpForm, true);
}
Run Code Online (Sandbox Code Playgroud)
我不确定从哪里开始.当我显示helpForm时,它会模糊/覆盖现有的UI,而我得到的只是一个灰色的空WPF窗口,没有帮助文件.
任何接受者?
我遇到了经典场景,当在.NET中创建Word COM对象时(通过Microsoft.Office.Interop.Word程序集),即使我正确关闭并释放对象,WinWord进程也不会退出.
我已经将其缩小到使用Word.Documents.Add()方法.我可以在没有问题的情况下以其他方式使用Word(打开文档,修改内容等),并在我告诉它时退出WinWord.exe.一旦我使用Add()方法(并且仅在添加模板时),该过程就会继续运行.
这是一个简单的例子,它可以重现这个问题:
Dim word As New Word.Application()
word.Visible = False
Dim documents As Word.Documents = word.Documents
Dim doc As Word.Document = documents.Add(Template:=CObj(templatePath), NewTemplate:=False, DocumentType:=Word.WdNewDocumentType.wdNewBlankDocument, Visible:=False)
'' dispose objects
doc.Close()
While (Marshal.ReleaseComObject(doc) <> 0)
End While
doc = Nothing
While (Marshal.ReleaseComObject(documents) <> 0)
End While
documents = Nothing
word.Quit()
While (Marshal.ReleaseComObject(word) <> 0)
End While
word = Nothing
GC.Collect()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在创建和正确处理对象,甚至采取额外的步骤来循环Marsha.ReleaseComObject,直到它返回正确的代码.在其他方面使用Word对象很好,只是那些讨厌的Documents.Add让我感到悲伤.是否有另一个在此过程中创建的对象需要引用和处理?我需要遵循另一个处理步骤吗?别的什么?非常感谢您的帮助 :)
Update: 我在处理步骤结束时尝试了GC.Collect,但仍然没有运气.
Update 2: 我已经将问题缩小到使用自定义模板.当我调用Documents.Add(...)时,我为新文档指定了一个自定义模板.如果我不这样做而是调用没有参数的Add(),那么问题就不会发生.
在我的C#应用程序中,在Excel Interop dll(作为参考)的帮助下,我正在读/写excel文件.如果我把这个程序移动到没有安装office/excel的系统(想想干净的机器),我就会遇到以下错误.
System.Runtime.InteropServices.COMException(0x80040154):由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG) )).
由于目标机器没有优秀,因此预计会出现上述错误.
我的问题是,除了在目标机器上注册Interop dll之外,还有其他方法可以使用我的程序吗?
interop ×10
c# ×6
.net ×2
excel ×2
wpf ×2
c++ ×1
chm ×1
com ×1
comexception ×1
elementhost ×1
f# ×1
hgsubversion ×1
hgsvn ×1
java ×1
jython ×1
matlab ×1
mercurial ×1
ms-word ×1
overloading ×1
overriding ×1
pinvoke ×1
python ×1
svn ×1
textbox ×1
winforms ×1