C# 发布后如何在EXE中包含SharePoint程序集

C# 发布后如何在EXE中包含SharePoint程序集,c#,sharepoint,visual-studio-2015,C#,Sharepoint,Visual Studio 2015,我在Visual Studio 2015中开发了一个简单的.EXE,当用户运行某些进程时,它会将一个项目添加到指定的SharePoint网站和列表中 该文件保存在一个共享的网络驱动器中,除了一个细节外,其他一切似乎都很正常 如果不将以下.dll文件保存在同一文件夹中,我似乎无法确定如何运行EXE: Microsoft.SharePoint.Client.Runtime.dll Microsoft.SharePoint.Client.dll 如果从保存EXE的文件夹中移动这些文件,则在运行EXE

我在Visual Studio 2015中开发了一个简单的.EXE,当用户运行某些进程时,它会将一个项目添加到指定的SharePoint网站和列表中

该文件保存在一个共享的网络驱动器中,除了一个细节外,其他一切似乎都很正常

如果不将以下.dll文件保存在同一文件夹中,我似乎无法确定如何运行EXE:

Microsoft.SharePoint.Client.Runtime.dll
Microsoft.SharePoint.Client.dll
如果从保存EXE的文件夹中移动这些文件,则在运行EXE时会收到以下错误消息:

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.SharePoint.Client,版本=15.0.0.0,区域性=中性…”。。。或者它的一个依赖项…

我(认为)我已经按照VS中的说明为应用程序设置了“强命名程序集”,并且我能够使用VS命令行和gacutil.exe(带有成功的确认消息)将SharePoint dll添加到GAC中,但如果没有2.dll文件,我仍然无法运行exe


注意:我开发的应用程序的目标是.NET-4,但是用户将从安装了.NET-3.5的系统访问文件,但是保存EXE的服务器上确实有.NET-4环境

我能够通过使用一个名为
ILMerge
的工具来实现这一点,该工具可以找到并作为NuGet软件包提供


ILMerge允许您将dll和exe文件合并到单个exe中

如果您从另一台电脑的网络路径运行exe,则此电脑的dll必须位于GAC文件夹或exe的同一文件夹中。简言之,GAC优先于文件夹。