我在这里重新发布一个我已经在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)?
谢谢,
查尔斯