在客户端机器上部署sharpshell时,我遇到了一些问题,如果有人可以帮助我,我真的很高兴。配置如下
- Sharpshell 2.2.0
- 64位操作系统
- 框架 4.5.1
- VC++ 2010 可再发行版
- 部署包基于 x86 架构构建
一旦我浏览了错误日志,就会发现正在发生错误“无法初始化 Nativebridge”,这是一个很棒的库工作,就像开发环境中的魅力一样。
在客户端机器上部署sharpshell时,我遇到了一些问题,如果有人可以帮助我,我真的很高兴。配置如下
一旦我浏览了错误日志,就会发现正在发生错误“无法初始化 Nativebridge”,这是一个很棒的库工作,就像开发环境中的魅力一样。
最后..我找到了解决我面临的问题的方法:)。
首先以 GET 的 master 分支形式将 Nativebridge 项目制作为 x64 Compactable。感谢裁判
在文件 SharpShell\NativeBridge\NativeBridge.cs、函数 Initialise()、nativeBridge 库尝试加载的行下进行了一些微小的更改。在我写这篇文章的时间编辑后,函数如下所示。
public bool Initialise()
{
// Get the manifest resource name.
var resouceName = GetBridgeManifestResourceName();
// We'll now try and get the bridge library path.
string bridgeLibraryPath = string.Empty;
try
{
int index = resouceName.LastIndexOf('.') > 0 ? resouceName.LastIndexOf('.', resouceName.LastIndexOf('.') - 1) : -1;
string resouceNameTrimed = resouceName.Substring(index+1,resouceName.Length - (index+1));
string ResourcePath = String.Format(@"{0}\{1}", System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),resouceNameTrimed);
using (var resourceStream = File.OpenRead(ResourcePath))
{
// Set the temporary path..
bridgeLibraryPath = Path.GetTempPath() + Guid.NewGuid().ToString() + ".dll";
using (var tempStream = File.Create(bridgeLibraryPath))
{
resourceStream.CopyTo(tempStream);
}
}
}
catch (Exception exception)
{
// Log the exception.
Logging.Error("NativeBridge: Failed to extract the bridge library. The manifest path is '" +
bridgeLibraryPath + "'", exception);
return false;
}
// Load the bridge library.
try
{
libraryHandle = Kernel32.LoadLibrary(bridgeLibraryPath);
}
catch (Exception exception)
{
// Log the exception.
Logging.Error("NativeBridge: Exception loading the bridge library.", exception);
}
// If the library hasn't been loaded, log the last windows error.
if (libraryHandle == IntPtr.Zero)
{
Logging.Error("NativeBridge: Failure to load the brige library.",
new Win32Exception(Marshal.GetLastWin32Error()));
return false;
}
Logging.Log("Bridge Initialised");
// We've successfully loaded the bridge library.
return true;
}
使sharpshell、servermanager 项目等可压缩到x64,只是将目标框架更改为x64 并重建。
在我的项目中用上面的替换sharpshell dll引用。
是的,这对我之后的案例工作来说已经足够了