使用mono将.NET Windows服务迁移到Linux的最佳方法是什么?我一直在努力避免将应用程序作为计划命令执行.
是否有可能像行为一样获得服务/系统守护进程(在linux中)?
我正在进入新的桌面应用程序开发.我觉得在家里使用.NET 2.0和c#.我想我不需要linq,也不关心WPF和其他Vista-oid花哨的关键字.我也喜欢相当紧凑和纤薄的2.0可再发行版,更多的是因为它包含了Vista和7.
为什么要切换到3.5?
我在Vista 64位上,我有一个使用x86配置构建的项目.一切正常.现在,我们正在创建测试.我们有NUnit 2.4.8,但是我们遇到了很多问题.
当我们直接选择.dll时,测试正在通过Nunit.exe(gui)加载,但在执行时我们有一个system.badimageformatexception.
我在谷歌搜索关于nunit.exe.config的一些技巧,但没有工作.(更改为UTF8 ...取消注释启动的.net版本).
任何的想法?
更新
我已经清理了解决方案并清除了所有BIN文件夹.现在,当我编译时,我清楚地看到我在bin目录中只有/ x86 /而不是x64中的旧/ debug /.
当我使用Nunit时,我有一个异常(在加载中):System.IO.FileNotFoundException ...
服务器堆栈跟踪:System.Reflection.Assembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,Assembly locationHint,StackCrawlMark&stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection)在System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,Evidence assemblySecurity,StackCrawlMark& stackMark,布尔forIntrospection)在System.Reflection.Assembly.InternalLoad(字符串assemblyString,在System.Reflection.Assembly.Load(字符串assemblyString)在NUnit.Core.Builders.TestAssemblyBuilder.Load证据assemblySecurity,StackCrawlMark&stackMark,布尔forIntrospection)(字符串在NUnit.Core.Builders.TestAssemblyBuilder.Builders.TestAssemblyBuilder.Build(String assemblyName,String testName,Nnoit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName,Boolean autoSuites)上的路径)布尔autoSuites)在NUnit.Core.TestSuiteBuilder.BuildSingleAssembly(TestPackage封装)在NUnit.Core.TestSuiteBuilder.Build(TestPackage封装)在NUnit.Core.SimpleTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage包)在NUnit.Core.ProxyTestRunner.Load(TestPackage包)的NUnit.Core.RemoteTestRunner.Load(TestPackage包)处于System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Int32 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage上的methodPtr,Boolean fExecuteInContext,Object []和outArgs)(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)建立(TestPackage封装)在NUnit.Core.SimpleTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.RemoteTestRunner.Load( System.Runtime.Remoting.Messaging.StackBuilderSink上的System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object []&outArgs)中的TestPackage包. SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)建立(TestPackage封装)在NUnit.Core.SimpleTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.ProxyTestRunner.Load(TestPackage封装)在NUnit.Core.RemoteTestRunner.Load( System.Runtime.Remoting.Messaging.StackBuilderSink上的System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md,Object [] args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object []&outArgs)中的TestPackage包. SyncProcessMessage(IMessage msg,Int32 methodPtr,Boolean fExecuteInContext)Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr的MD,对象[]指定参数时,对象服务器,的Int32 methodPtr,布尔fExecuteInContext,对象[]&outArgs)在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(即时聊天味精,的Int32 methodPtr,布尔fExecuteInContext )Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr的MD,对象[]指定参数时,对象服务器,的Int32 methodPtr,布尔fExecuteInContext,对象[]&outArgs)在System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(即时聊天味精,的Int32 methodPtr,布尔fExecuteInContext )
在[0]处重新抛出异常:位于NUnit.Core的System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)的System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg). NUnit.Util.TestDomain.Load(TestPackage包)中的TestRunner.Load(TestPackage包),位于NUnit.Util.TestLoader.LoadTest(String testName)
更新2
我正在使用任何已修改为x86而不是x64的CPU进行编译.原因是调试.这已在前一个链接中讨论过.我必须确认NUnit是在64位mod和Corflags.exe中运行的
单击CheckBox时,我需要选择ListBox中的所有项目.是否可以使用一行代码选择ListBox中的所有项目?或者我是否必须遍历所有项目并将其中的每一项设置为true?
谢谢 :)
我正在寻找一种技术或工具,我们可以用它来混淆或以某种方式保护我们编译的c#代码.目标不是用户/数据安全,而是阻碍我们软件中某些技术的逆向工程.
这不适用于Web,而是适用于桌面应用程序.
那么,你知道有哪些工具可用来做这类事吗?(他们不需要自由)
如果有的话他们会有什么样的表现影响?
在开发期间使用调试器时,这是否有任何负面影响?
我们在现场记录问题的堆栈跟踪.混淆会如何影响这个?
我有一个控制台应用程序,需要使用一些需要管理员级别的代码.我已经读过我需要添加一个Manifest文件myprogram.exe.manifest,它看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator">
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Run Code Online (Sandbox Code Playgroud)
但它仍然没有提升UAC(在控制台或VS中的调试).我该如何解决这个问题?
如果我在Administrator中运行解决方案或在Administrator中运行/bin/*.exe,我能够使其工作.我仍然想知道是否有可能在应用程序启动时弹出而不是显式右键单击>以管理员身份运行?
假设我有:
Dim los1 as New List(Of String)
los1.Add("Some value")
Dim los2 as New List(Of String)
los2.Add("More values")
Run Code Online (Sandbox Code Playgroud)
将两者合二为一的最有效方法是List(Of String)
什么?
编辑:虽然我喜欢每个人提供的解决方案,但我可能也应该提到我使用.NET 2.0框架.
我正在尝试使用该Environment.OSVersion.Version
对象,并且无法确定哪个版本表明操作系统是Windows XP或更高版本(例如,我想要排除Windows 2000,ME或以前的版本).
假设按订阅顺序调用事件订阅者是否安全?
例:
void One(object sender, EventArgs e) {}
void Two(object sender, EventArgs e) {}
event EventHandler foo;
foo += One;
foo += Two;
Run Code Online (Sandbox Code Playgroud)
当事件被触发时,One()总是在Two()之前调用吗?
编辑:
你应该不依赖它,我只是想.这个想法是,多播代表与COMMAND模式类似.所以我只是想知道.通常你会使用一个保存COMMAND命令的集合,这样你就可以做undo/redo/whatever.
这两种方法Thread.Suspend()
和Thread.Resume()
是因为.NET 2.0过时.为什么?什么是其他替代品和任何例子?