无法在Windows服务使用的库应用程序中加载程序集异常

时间:2015-09-01 15:55:01

标签: .net wcf dll config microsoft-dynamics

我在这里重新发布一个我已经在Dynamics社区提出的问题,但我想我不会从他们那里得到任何答案:

https://community.dynamics.com/ax/f/33/t/171159

我认为动态中的知识并不一定是理解我的问题所必需的。

我有三个部分的c#应用程序: - Windows服务 - WPF视图 - 共享库

(在Dynamics论坛帖子中,它是一个控制台应用程序而不是Windows服务,但交易是相同的)

服务应用程序调用此类的方法“Test()”,该类位于库项目中:

public class Program
{
    private const string _connectionString = "[...]";
    private const long _channelId = 5637146827;

    public static void test()
    {
        var dllConfigPath = string.Concat(AppDomain.CurrentDomain.BaseDirectory, "my_dll.config");

        var configFileMap = new ExeConfigurationFileMap()
        {
            ExeConfigFilename = dllConfigPath
        };

        var appConfigFile = ConfigurationManager.OpenMappedExeConfiguration(configFileMap, ConfigurationUserLevel.None);

        // configuration is successfully loaded at this point
        var configSection = (CommerceRuntimeSection)appConfigFile.GetSection("commerceRuntime");

        // an exception is throw here
        var commerceRuntimeConfiguration = new CommerceRuntimeConfiguration(configSection, _connectionString, true);

        var commercePrincipal = new CommercePrincipal(new CommerceIdentity(_channelId, Enumerable.Empty<string>()));

        var runtime = CommerceRuntime.Create(commerceRuntimeConfiguration, commercePrincipal);

        ChannelManager channelManager = ChannelManager.Create(runtime);
    }
}

在行中抛出“无法加载文件或程序集Microsoft.Dynamics.Commerce.Runtime.Services”的异常 “new CommerceRuntimeConfiguration()”

我没有这个类的源代码,我只知道它在参数中需要一段配置文件。 配置文件如下所述,它位于库项目中,而不是服务项目中(可能是重点)。

http://img11.hostingpics.net/pics/834895config.png(对于此链接,我没有直接发布XML)

正如我在Dynamics论坛上所解释的那样,所需的所有DLL都在库项目中正确包含。<​​/ p>

我重申了相同的结论:

我发现的唯一解决方案是:

,这是我无法接受的
  • 复制服务Windows应用程序上的.config文件

  • 在服务窗口应用程序引用中添加所有dll。但我仍然需要它在库应用程序中(没有,库中的代码不能编译):所以基本上,我必须引用两次所有的DLL ...

如何使这个应用程序架构工作(在服务中没有复制配置和DLL)?

谢谢,

查尔斯

0 个答案:

没有答案