Я получил эту ошибку
Не удалось загрузить файл или сборку
'TranslationFormsApplication.TranslationForm.SavedData>' или один из его
зависимостей. Неверный параметр. (Исключение из HRESULT:
0x80070057 (E_INVALIDARG)
когда я отлаживаю свой код в C #. SavedData - это имя класса внутри другого класса.
Ниже приведен пример кода
namespace TranslationFormsApplication
{
partial class TranslationForm
{
private class SavedData
{
public SavedData(int id, string s, string t)
{
index = id;
source = s;
translation = t;
}
private int m_index;
public int index { get { return m_index; } set { m_index = value; }
}
}
}
Стек ошибок при попытке открыть конструктор форм выглядит следующим образом:
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.Combine(String path1, String path2)
at Microsoft.VisualStudio.Platform.VsAppDomainManager.d__1.MoveNext()
at Microsoft.VisualStudio.Platform.VsAppDomainManager.InnerResolveHandler(String name)
at Microsoft.VisualStudio.Platform.VsAppDomainManager.ResolveHandler(Object sender, ResolveEventArgs args)
at System.AppDomain.OnAssemblyResolveEvent(RuntimeAssembly assembly, String assemblyFullName)
Я посмотрел на папку x86 / Debug /, и там действительно нет файла TranslationFormsApplication.TranslationForm.SavedData.
Поскольку я использую Windows 7, я знаю, что мы должны очистить временные файлы ASP.net в
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET \
И все остальные версии
а также в
C: \ Windows \ Microsoft.NET \ Framework \
А также в
C: \ Users \ Имя пользователя \ AppData \ Tmp \
Я сделал это, на самом деле я не могу найти «Временные файлы ASP.NET». Я также удалил папку bin / Debug и obj86 / Debug, но это не помогает.
Весь доступ к классу осуществляется внутри класса TranslationForm. Ниже приведены примеры:
частный словарь textIndexes;
private void InitializeComponent()
{
this.textIndexes = new Dictionary<int,SavedData>();
}
private void accept_Click(object sender, System.EventArgs e)
{
SavedData data;
if (textIndexes.ContainsKey(selectedIndex))
{
data = textIndexes[selectedIndex];
data.source = sourceEdit.Text;
data.translation = transEdit.Text;
}
else
{
data = new SavedData(selectedIndex, sourceEdit.Text, transEdit.Text);
textIndexes.Add(selectedIndex, data);
}
}
private void saveTrainingFiles()
{
foreach (KeyValuePair<int, SavedData> line in textIndexes)
{
SavedData data = line.Value;
sw.WriteLine(data.source);
sw2.WriteLine(data.translation);
}
textIndexes.Clear();
}
Когда я изменил код для использования кортежа вместо класса SavedData, я получил следующее предупреждение:
Предупреждение 1 Указанное имя сборки или кодовая база недопустимы. (Исключение из HRESULT: 0x80131047)
Ошибка стека при попытке открыть FormDesigner:
1. Hide Call Stack
at System.Reflection.AssemblyName.nInit(RuntimeAssembly& assembly, Boolean forIntrospection, Boolean raiseResolveEvent)
at System.Reflection.AssemblyName..ctor(String assemblyName)
at Microsoft.VisualStudio.Design.VSTypeResolutionService.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, ReferenceType refType)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.AggregateTypeResolutionService.GetType(String name)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.GetRuntimeType(String typeName)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.GetType(String typeName)
at System.ComponentModel.Design.Serialization.DesignerSerializationManager.System.ComponentModel.Design.Serialization.IDesignerSerializationManager.GetType(String typeName)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.GetType(IDesignerSerializationManager manager, String name, Dictionary`2 names)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.FillStatementTable(IDesignerSerializationManager manager, IDictionary table, Dictionary`2 names, CodeStatementCollection statements, String className)
at System.ComponentModel.Design.Serialization.TypeCodeDomSerializer.Deserialize(IDesignerSerializationManager manager, CodeTypeDeclaration declaration)
at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
at Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)
Я думаю, это как-то связано с управлением версиями .NET, а также использованием 64-битной машины. Любая идея, как решить это с и без использования класса?