.net 错误:无法加载文件或程序集';ExcelAddIn1.XmlSerializers';或者其中一个';它的依赖性。系统找不到指定的文件
我有一个excel的外接程序项目。它在我的电脑上运行得很好。但是当我在客户端机器上安装它时,它会给我我提到的错误消息.net 错误:无法加载文件或程序集';ExcelAddIn1.XmlSerializers';或者其中一个';它的依赖性。系统找不到指定的文件,.net,json,vsto,publish,xmlserializer,.net,Json,Vsto,Publish,Xmlserializer,我有一个excel的外接程序项目。它在我的电脑上运行得很好。但是当我在客户端机器上安装它时,它会给我我提到的错误消息 我已经使用project->properties->publish发布了它 我勾选了“仅启用我的代码” 我已清除了“未找到文件异常”的“抛出”和“用户未处理”标记 我使用项目文件夹中“发布”文件夹中的“设置”文件在客户端上设置项目 在发布->先决条件中,我勾选了以下项目: .NETFramework sp1 Microsoft.net framework 4 Microsoft
[Serializable]
[JsonObject(MemberSerialization.OptIn)]
public class documentSchemaRestInfo
{
[System.Runtime.Serialization.DataMember]
[JsonProperty]
public double id { get; set; }
[System.Runtime.Serialization.DataMember]
[JsonProperty]
public string name { get; set; }
[System.Runtime.Serialization.DataMember]
[JsonProperty]
public string description { get; set; }
[System.Runtime.Serialization.DataMember]
[JsonProperty]
public string[] fields { get; set; }
}
//************************************************************public List<DocumentField> getSchemaOfGroup(documentGroupPk groupPK)
{
List<DocumentField> result = new List<DocumentField>();
HttpWebRequest request = (HttpWebRequest)WebRequest.
Create(ProxyFactory.baseAddress+"/services/rest/group/"
+ groupPK.id + "/schema");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());
string responseBody = streamReader.ReadToEnd();
dynamic ds = ((dynamic)JsonConvert.DeserializeObject(responseBody))
.documentSchemaRestInfo;
foreach (dynamic f in ds.fields)
{
result.Add(new DocumentField(
f.name.ToString(),f.internalName.ToString(),false));
}
return result;
}
您是否包含了对以下内容的引用?您确定客户端已安装.NET 4.0吗?仅查看代码spinets有点让人困惑,但从问题的标题,我可以猜您在动态创建序列化程序集方面有问题(安全问题或部分信任问题)。您可以通过转到project properties/Build并从列表中选择Off,尝试将加载项dll中的“Generate serialization assembly”(生成序列化程序集)关闭。我从未使用过Excel加载项,但我创建了一些Visual Studio扩展,错误提醒我当时混淆了扩展的注册表路径。对于VS,注册表中有两个路径要考虑,一个用于64位,一个用于32位。 你查过注册表了吗 试试看 项目>属性>生成选项卡>生成序列化程序集>设置
@Iravanchi发生故障的客户端上的事件日志是否提供了无法加载的程序集的详细信息?@J.Tihon我不确定,我必须检查一下。当我这样做时,我会在这里发布。@J.Tihon在安装发布的软件包期间记录了一个错误,但它与.NET framework检查有关。但这很奇怪,因为已经安装了完全相同的.NET framework版本。即使我在开发机器和部署机器上检查了.NET framework版本,它们都是相同的,但问题并没有出现在开发机器上。我不认为这是一个框架安装问题,因为应用程序有时会工作。如果框架不存在,它就不应该工作。如果可能重复“是”,则问题与应用程序生成的程序集有关。但奇怪的是,它在“某些时候”起作用,即使它不起作用,如果你“坚持”,它也会开始起作用!所以我最好的猜测是一些线程问题,这意味着有人试图在另一个线程上实际创建程序集之前加载程序集。你真是个天才!我已经处理这件事好几天了。谢谢。我真的很感谢你的帮助。谢谢。我远离天才:)。。。以前不得不处理这些事情。谢谢你的回复。是的,我对登记处很小心。
excelApp = (Excel.Application)
System.Runtime.InteropServices.Marshal.GetActiveObject
("Excel.Application");
1.//If there is no ticket, means we haven't had a successfull login yet.=>
2.// We should show the login form instead of groups form.
3.if (string.IsNullOrEmpty(ProxyFactory.ticket))
4.{
5. okOrCancel = new LoginForm().ShowDialog();
6. if (okOrCancel == DialogResult.OK)
7. new GroupsForm().ShowDialog();
8.}
9.//If the is a ticket, means we have had a successful login.
10.else
11. new GroupsForm().ShowDialog();