Я не знаю,что делать
переписал всё максимально упрощённо, создал другие проекты
вот DLL:
using System;
namespace Test_DLL
{
[Serializable]
public class LightingVar
{
public int light = 2;
}
}
Вот приложение под Forms:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;
using Test_DLL;
namespace TestWin
{
public partial class Form1 : Form
{
public LightingVar lv = new LightingVar();
public string filename;
public Form1()
{
InitializeComponent();
textBox1.Text = "" + lv.light;
}
private void button2_Click(object sender, EventArgs e) // Чтение
{
openFileDialog1 .Filter = "Bin files(*.bin)|*.bin|All files(*.*)|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.Cancel)
return;
string filename = openFileDialog1.FileName;
LoadConfiguration(filename);
textBox1.Text = "" + lv.light;
}
public int LoadConfiguration(string filename)//Процедура с читывания из файла
{
LightingVar ser = null;
try
{
using (Stream stream = File.Open(filename, FileMode.Open))
{
BinaryFormatter bformatter = new BinaryFormatter();
ser = (LightingVar)bformatter.Deserialize(stream);
stream.Close();
}
lv = ser;
}
catch (Exception ex) { }
return 0;
}
private void button1_Click(object sender, EventArgs e) // Запись
{
lv.light++;
saveFileDialog1.Filter = "Bin files(*.bin)|*.bin|All files(*.*)|*.*";
if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
return;
string filename = saveFileDialog1.FileName;
SaveConfiguration(filename);
}
internal int SaveConfiguration(string Filename)//Процедура сохранения в файл
{
try
{
using (Stream stream = File.Open(Filename, FileMode.Create))
{
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, lv);
stream.Close();
}
}
catch (Exception ex) { }
return 0;
}
}
}
Всё работает отлично, сохраняю, при загрузке этого же файла значение в текстбоксе увеличивается на 1
При загрузке в ACAD, вылетает исключение, что не может найти сборку Test_DLL, и это скомпилированной программы, где класс LightingVar выделяется как опознанный
вот программа для ACAD:
using Autodesk.AutoCAD.Runtime;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using Test_DLL;
namespace TestACAD
{
public class Class1
{
[CommandMethod ("zz")]
public void cad()
{
string filename = @"C:\test\3.bin";
LightingVar lv = new LightingVar();
LightingVar ser = null;
try
{
using (Stream stream = File.Open(filename, FileMode.Open))
{
BinaryFormatter bformatter = new BinaryFormatter();
ser = (LightingVar)bformatter.Deserialize(stream); // ВОТ ЗДЕСЬ ВЫХОДИТ В CATCH
stream.Close();
}
lv = ser;
}
catch (System.Exception ex) { }
}
}
}