我正在尝试为Linux编写一个Mono C#守护进程.
当它完成处理而不是仅仅杀死进程时,我想做它的启动和停止.
有没有人有这方面的例子?
编辑:我想出如何在debian中使用start-stop-daemon --background,所以我想我现在就用它.
编辑:我也在java中实现这个,他们有这个很好的addShutdownHook,可以捕获终止应用程序.我需要花费更多的时间来整理单声道服务的依赖关系,或找到一种方法来捕获应用程序终止.
有SessionEnd事件,但这仅适用于服务而非控制台应用程序
我正在尝试使用log4j获取其他字段,并且它的工作正常但只有当我在代码中而不是在log4j.properties中创建一个appender时
使用属性文件,它将运行但不会使用AppServerPatternLayout,因此不会显示自定义字段.
log4j.rootLogger=FATAL
log4j.logger.some.log=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=logging.AppServerPatternLayout
log4j.appender.stdout.layout.ConversionPattern=-----------------using log file------------------------%nTime: %d%nHost: %h%nServer: %s%nComponent: %b%nVersion: %v%nPriority: %p%nThread Id: %t%nContext: %x%nMessage: %m%n
Run Code Online (Sandbox Code Playgroud)
AppServerLoggerFactory factory;
factory = new AppServerLoggerFactory("MyServer", "MyComponent", "1.0");
AppServerLogger.setFactory(factory);
Logger logger = AppServerLogger.getLogger("some.log");
PatternLayout layout = new AppServerPatternLayout( formatString );
logger.addAppender( new ConsoleAppender(layout) );
logger.info("Hello");
Run Code Online (Sandbox Code Playgroud)
PropertyConfigurator.configure("customlog.properties");
AppServerLoggerFactory factory;
factory = new AppServerLoggerFactory("MyServer", "MyComponent", "1.0");
AppServerLogger.setFactory(factory);
Logger logger = AppServerLogger.getLogger("some.log");
logger.info("Hello");
Run Code Online (Sandbox Code Playgroud)
----------------using in code appender----------------------
Time: 2009-11-06 …Run Code Online (Sandbox Code Playgroud) 我正在使用TeamCity Continuous Integration服务器在linux上编译一个NAnt项目.我已经能够通过命令行运行器在单声道上运行NAnt来生成测试报告,但是没有像NAnt Runner那样使用报告的选项.我也在使用MBUnit作为测试框架.
如何在测试报告中合并并显示"测试失败:1(1新),传递:3049"用于构建?
更新:看一下MBUnitTask它的NAnt任务,该任务使用TeamCity期望从NUnit发送的消息,因此它允许您使用TeamCity的所有功能进行测试.
更新: Galio有更好的支持,所以你只需要引用Galio MBUnit 3.5 dll而不是MBUnit 3.5 dll并切换到galio runner以使其工作.
嗨,我正在尝试使用mono-service2从visual studio运行一个股票Windows服务项目.我正在使用mono 2.0和编译器在debian上运行它.
gmcs *.cs -pkg:dotnet
Run Code Online (Sandbox Code Playgroud)
我尝试从这开始(我尝试使用-d设置为dir与app和-n,-m设置)
mono-service2 -l:service.lock --debug Program.exe
Run Code Online (Sandbox Code Playgroud)
唯一的代码更改是添加用于测试的writelines
Service1.cs
using System;
using System.ServiceProcess;
namespace spikes
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Console.WriteLine("starting...");
}
protected override void OnStop()
{
Console.WriteLine("stopping....");
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是这个错误
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---> System.DllNotFoundException: libMonoPosixHelper.so
at (wrapper managed-to-native) Mono.Unix.Native.Syscall:_L_ctermid ()
at Mono.Unix.Native.Syscall..cctor () [0x00000]
--- End of inner exception …Run Code Online (Sandbox Code Playgroud) 我想从teamcity中提取文物.
我一直在尝试使用c#和HtmlAgilityPack来转到网站并找到最新版本及其工件.我目前陷入登录状态,我想我只需要发送Session Cookies.
我是朝着正确的方向前进的,还有其他人试过吗?
我意识到使用构建脚本推出文件很容易,但我想尽量减少对Ant,NAnt文件的更改,因为我正在考虑将其扩展到100个应用程序.
编辑:这个问题看起来很有希望从登录后面的页面获取HTML
编辑:现在这个工作,我只需要编写一些代码来解析它
WebClient ww = new WebClient();
ww.Credentials = CredentialCache.DefaultCredentials;
ww.DownloadString("http://yourteamcity.com/login.html");
ww.Headers.Add("Cookie",ww.ResponseHeaders["Set-Cookie"]);
NameValueCollection post = new NameValueCollection();
post.Add("username", "name");
post.Add("remember","true");
post.Add("submitLogin", "Login");
post.Add("publicKey","long thing to intercept with fiddler");
post.Add("encryptedPassword","not giving you this");
post.Add("_", "");
byte[] values = ww.UploadValues("http://yourteamcity.com/loginSubmit.html", "POST",post);
string s = ww.DownloadString("http://yourteamcity.com/overview.html");
Run Code Online (Sandbox Code Playgroud) 摘要:
我想用Fluent NHibernate Automapper保存两个相同名称和不同名称空间的类
上下文
我写的是必须将许多不同的对象导入数据库进行测试.我最终会将mappers写成一个合适的模型.
我一直在使用code gen和Fluent NHibernate来获取这些DTO并将它们直接转储到db.
例外情况确实说(尝试使用auto-import ="false")
码
public class ClassConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
instance.Table(instance.EntityType.Namespace.Replace(".", "_"));
}
}
namespace Sample.Models.Test1
{
public class Test
{
public virtual int Id { get; set; }
public virtual string Something { get; set; }
}
}
namespace Sample.Models.Test2
{
public class Test
{
public virtual int Id { get; set; }
public virtual string SomethingElse { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
这是实际的应用程序代码
var model …Run Code Online (Sandbox Code Playgroud) 我有nutch和lucene设置来抓取和索引一些网站,我想使用.net网站而不是nutch附带的JSP网站.
谁能推荐一些解决方案?
我已经看到了解决方案,其中有一个应用程序在索引服务器上运行,.Net站点使用远程连接.
速度是一个明显的考虑因素,所以这仍然表现良好吗?
编辑: NHibernate.Search可以为此工作吗?
编辑:我们最终使用Solr索引服务器,我们的ASP.net站点使用solrnet库.
我正在尝试编译activemq附带的示例
在apache-activemq-5.1.0\example\src \
TopicPublisher.java,CommandLineSupport.java
在编译thru netbeans时,它有一些引用问题,说javax.jms不存在.
我已经尝试了j2ee.jar,openjms,sun jms,但它们都给出了同样的错误.
它也抱怨org.apache.activemq.util不存在,但我引用activemq-all-5.1.0.jar.
注意:所有其他对外部jar的引用都正常
有任何想法吗?
编辑:需要引用的罐子是
activemq-core-5.1.0.jar
geronimo-jms_1.1_spec-1.1.1.jar
commons-logging-1.1.jar
geronimo-j2ee-management_1.0_spec-1.0.jar
Run Code Online (Sandbox Code Playgroud)
它们位于lib文件夹中的activemq binary dist中
我正在创建一个自我更新的应用程序,我将大部分代码放在一个单独的DLL中.这是命令行,最终将在Mono上运行.我只是试图让这段代码在命令行的Windows上用C#工作.
如何创建ac#应用程序,我可以在运行时删除支持的dll?
AppDomain domain = AppDomain.CreateDomain("MyDomain");
ObjectHandle instance = domain.CreateInstance( "VersionUpdater.Core", "VersionUpdater.Core.VersionInfo");
object unwrap = instance.Unwrap();
Console.WriteLine(((ICommand)unwrap).Run());
AppDomain.Unload(domain);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
在ReadLine中,VersionUpdater.Core.dll仍然被锁定而无法删除
ICommand接口位于VersionUpdater.Common.dll中,由Commandline应用程序和VersionUpdater.Core.dll引用