小编Sco*_*wan的帖子

我如何编写Mono守护进程的代码

我正在尝试为Linux编写一个Mono C#守护进程.

当它完成处理而不是仅仅杀死进程时,我想做它的启动和停止.

有没有人有这方面的例子?

编辑:我想出如何在debian中使用start-stop-daemon --background,所以我想我现在就用它.

编辑:我也在java中实现这个,他们有这个很好的addShutdownHook,可以捕获终止应用程序.我需要花费更多的时间来整理单声道服务的依赖关系,或找到一种方法来捕获应用程序终止.

有SessionEnd事件,但这仅适用于服务而非控制台应用程序

答: 使用mono-service在Linux上包装Windows服务

c# linux mono daemon mono-service

52
推荐指数
3
解决办法
2万
查看次数

Log4J自定义字段

介绍:

我正在尝试使用log4j获取其他字段,并且它的工作正常但只有当我在代码中而不是在log4j.properties中创建一个appender时

进展:

  1. 使用本文为log4j 1.1.3 添加转换字符到PatternLayout
  2. 为log4j 1.2制作了一个示例应用程序

问题:

使用属性文件,它将运行但不会使用AppServerPatternLayout,因此不会显示自定义字段.

下载代码

customlog.properties

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)

没有log4j属性文件的Main.java日志记录

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)

使用log4j属性文件进行Main.java日志记录

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)

java log4j

17
推荐指数
1
解决办法
2万
查看次数

在TeamCity中使用MBUnit

我正在使用TeamCity Continuous Integration服务器在linux上编译一个NAnt项目.我已经能够通过命令行运行器在单声道上运行NAnt来生成测试报告,但是没有像NAnt Runner那样使用报告的选项.我也在使用MBUnit作为测试框架.

如何在测试报告中合并并显示"测试失败:1(1新),传递:3049"用于构建?

更新:看一下MBUnitTask它的NAnt任务,该任务使用TeamCity期望从NUnit发送的消息,因此它允许您使用TeamCity的所有功能进行测试.

MBUnitTask

更新: Galio有更好的支持,所以你只需要引用Galio MBUnit 3.5 dll而不是MBUnit 3.5 dll并切换到galio runner以使其工作.

nant mono teamcity mbunit

16
推荐指数
1
解决办法
3310
查看次数

使用Nutch履带与Solr

我能够将Apache Nutch爬虫与Solr Index服务器集成吗?

编辑:

我们的一位开发人员提出了这些帖子的解决方案

  1. 跑Nutch和Solr
  2. 运行Nutch和Solr的更新

回答

lucene solr nutch

13
推荐指数
2
解决办法
1万
查看次数

使用mono-service在Linux上包装Windows服务

嗨,我正在尝试使用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)

linux mono mono-service

13
推荐指数
1
解决办法
2万
查看次数

如何从TeamCity中提取工件?

我想从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)

ant nant teamcity continuous-integration html-agility-pack

5
推荐指数
1
解决办法
1873
查看次数

使用AutoMapping流畅的NHibernate DuplicateMappingException

摘要:

我想用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)

mysql fluent-nhibernate automapping

4
推荐指数
2
解决办法
4177
查看次数

Java Lucene与.Net集成

我有nutch和lucene设置来抓取和索引一些网站,我想使用.net网站而不是nutch附带的JSP网站.

谁能推荐一些解决方案?

我已经看到了解决方案,其中有一个应用程序在索引服务器上运行,.Net站点使用远程连接.

速度是一个明显的考虑因素,所以这仍然表现良好吗?

编辑: NHibernate.Search可以为此工作吗?

编辑:我们最终使用Solr索引服务器,我们的ASP.net站点使用solrnet库.

.net lucene solr nutch

3
推荐指数
1
解决办法
1941
查看次数

javax.jms不存在 - 编译activemq示例

我正在尝试编译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中

java activemq-classic netbeans jms

3
推荐指数
1
解决办法
2万
查看次数

在c#中执行然后删除DLL

我正在创建一个自我更新的应用程序,我将大部分代码放在一个单独的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引用

mono appdomain self-updating

2
推荐指数
1
解决办法
2518
查看次数