我已经用这个问题踢了好几天了。我已经做了很多研究,并且发现了与我的案例密切相关但并不具体的问题。
使用Visual Studio 2008 SSIS包。仅使用一个脚本组件。在这个脚本组件中,我正在序列化一个强类型类(CCMSModel)并尝试将其写入服务器的d:\驱动器。我使用的是.NET 3.5。在我的开发机器上工作得很好,但是当我将它部署到我的SQL Server 2008 R2(SSIS)时会中断。我已经完全删除了我的代码以消除任何增加的复杂性:
[Serializable]
public class CCMSModel
{
public string BOBorEOB { get; set; }
}
...
List<CCMSModel> myList = new List<CCMSModel>();
CCMSModel item = new CCMSModel();
item.BOBorEOB = "Test";
myList.Add(item);
string filePath = "d:\\ScheduleFiles\\6xml\\ss.xml";
var serializer = new XmlSerializer(typeof(List<CCMSModel>));
using (var stream = File.OpenWrite(filePath))
{
serializer.Serialize(stream, myList);
}
...
想要添加我有足够的权限在服务器上写,我是sql server上的sysadmin。我还有一个使用Visual Studio 2012(SSIS)和.NET 4.0并部署到SQL Server 2012的另一个SSIS包。这个包完全相同(复制/粘贴代码),它工作得很好。
在我的研究中,我发现一篇文章,我忍不住要看到一个非常密切的关系。相同的错误和相同的代码。但是,此特定方案使用的是.NET 4.0,并且在具有.NET 4.0和4.5的环境中进行部署或执行。该文章包含一个声明解决问题的链接(在底部)(特定于4.0 / 4.5框架)。声称4.5中的XMLSerialize与我的C#编译器上的XMLSerialize略有不同,因此不兼容。
InvalidProgramException with XmlSerializer
虽然这篇文章有一个非常相似,但这并不是我特别设置的(因为我在3.5)。但是,它确实提到了我可能遇到与XMLSerialise实现不兼容的事实。我一直在追寻,看看是不是这样,但是我的搜索已经干了。
我收到一个内部异常错误: System.TypeInitializationException:'Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1'的类型初始值设定项引发了异常。 ---&GT; System.NullReferenceException:未将对象引用设置为对象的实例。 在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterList1..cctor()