我正在尝试将大约 200 多个 dll 文件添加到我的 Visual Studio 项目(sage 200 个程序集文件)中,但是当我转到Project -> Add Reference
部分并浏览文件时,它什么也没显示。我可以轻松浏览大约 30-50 个文件,并且可以显示但不能同时显示 100 多个文件。
有什么设置可以改变这个吗?或者是否有任何其他方法可以让我制作 sage 200 C# 代码来连接/创建客户/销售发票等。
我正在尝试将大约 200 多个 dll 文件添加到我的 Visual Studio 项目(sage 200 个程序集文件)中,但是当我转到Project -> Add Reference
部分并浏览文件时,它什么也没显示。我可以轻松浏览大约 30-50 个文件,并且可以显示但不能同时显示 100 多个文件。
有什么设置可以改变这个吗?或者是否有任何其他方法可以让我制作 sage 200 C# 代码来连接/创建客户/销售发票等。
实际上没有必要在项目中添加这么多的 DLL。Sage 200 有一些基本的 dll 文件要添加到项目中,并且有 sage 200 SDK 支持的初始代码,这有助于从安装本身引用所有必需的程序集。
这是他们文档中的示例代码:
以下是编写从 Sage.MMS.BaseForm 派生的基本 Sage 200 表单所需的最少参考资料。
以下是在财务模块中使用类所需的最少参考资料。
以下是在 Commercials 模块中使用类所需的最少参考资料。
以下是在项目会计模块中使用类所需的最少参考资料。
除了上面列出的财务和商业参考之外,以下是在物料清单模块中使用类所需的最低参考。
为了能够在代码中运行任何 Sage 200 报告,您将需要以下最低参考:
这是从安装目录引用所有必需 dll的c#代码
#region constants
private const string REG_PATH = @"Software\Sage\MMS";
private const string REGKEY_VALUE = "ClientInstallLocation";
private const string DEFAULT_ASSEMBLY = "Sage.Common.dll";
private const string ASSEMBLY_RESOLVER = "Sage.Common.Utilities.AssemblyResolver";
private const string RESOLVER_METHOD = "GetResolver";
#endregion constants
/// <summary>
/// Locates and invokes assemblies from the client folder at runtime.
/// </summary>
static void FindCore200()
{
// get registry info for Sage 200 server path
string path = string.Empty;
RegistryKey root = Registry.CurrentUser;
RegistryKey key = root.OpenSubKey(REG_PATH);
if (key != null)
{
object value = key.GetValue(REGKEY_VALUE);
if (value != null)
path = value as string;
}
// refer to all installed assemblies based on location of default one
if (string.IsNullOrEmpty(path) == false)
{
string commonDllAssemblyName = System.IO.Path.Combine(path, DEFAULT_ASSEMBLY);
if (System.IO.File.Exists(commonDllAssemblyName))
{
System.Reflection.Assembly defaultAssembly = System.Reflection.Assembly.LoadFrom(commonDllAssemblyName);
Type type = defaultAssembly.GetType(ASSEMBLY_RESOLVER);
MethodInfo method = type.GetMethod(RESOLVER_METHOD);
method.Invoke(null, null);
}
}
}
/// <summary>
/// Launch the application's main code
/// </summary>
static void LaunchApplication()
{
// NOTE: Entering this function, .Net will attempt to load sage assemblies into the AppDomain.
// Assembly resolution MUST be configured before entering this function.
// -- Replace this code with your application startup code --
// | |
// V V
var app = new ClassReferencingSageObjects();
app.Run();
// ^ ^
// | |
// -- Replace this code with your application startup code --
}
/// <summary>
/// Program main entry point.
/// </summary>
static void Main()
{
FindCore200();
LaunchApplication();
}