Отсутствует сборка, но когда я добавляю ее, она говорит, что файл метаданных не может быть найден C# .NET
- Привет!
Похоже, я столкнулся с небольшой дилеммой, и это будет означать, что мое приложение не будет компилировать код C#, который мне нужен для компиляции
Если я не добавлю ссылку, она скажет
[The type or namespace name 'Window' could not be found (are you missing a using directive or an assembly reference?)
и когда я добавлю
PresentationFramework.dll
там написано
Metadata file 'PresentationFramework.dll' could not be found
Я провел некоторые исследования, и мне кажется, что
The type or namespace name 'Window' needs PresentationFramework.dll
Почему мое приложение выдает мне эту ошибку, когда я пытаюсь скомпилировать внутри своего приложения (не из VS)
Мой исходный код
using Microsoft.CSharp; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Linq; using System.Windows; namespace SimpleBuilder { /// <summary> /// Interaction logic for MainWindow.xaml /// store code /// select what features /// print out textfile with all the code from the features /// compile that textfileContent to a exe /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void fakeMessageOne() { if(fakeMessageCheckbox.IsChecked == true) { fakeMessage1 fkmsg = new fakeMessage1(); fkmsg.fakeMessage(); } } private void button_Click(object sender, RoutedEventArgs e) { CSharpCodeProvider csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", frameworkTextbox.Text } }); CompilerParameters parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, outputTextbox.Text, true); parameters.GenerateExecutable = true; parameters.ReferencedAssemblies.Add("Microsoft.CSharp.dll"); parameters.ReferencedAssemblies.Add("System.dll"); //parameters.ReferencedAssemblies.Add("PresentationFramework.dll"); commented this out since it wasnt working. CompilerResults result = csc.CompileAssemblyFromSource(parameters, sourceTextbox.Text); if (result.Errors.HasErrors) { result.Errors.Cast<CompilerError>().ToList().ForEach(error => errorTextbox.Text += error.ErrorText + "\r\n"); } else { errorTextbox.Text = "--- Build Succeeded! ---"; } } } }
Код, который я пытаюсь скомпилировать
using Microsoft.CSharp; using System.CodeDom.Compiler; using System.Collections.Generic; using System.Linq; using System.Windows; namespace SimpleBuilder { /// <summary> /// Interaction logic for MainWindow.xaml /// store code /// select what features /// print out textfile with all the code from the features /// compile that textfileContent to a exe /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void fakeMessageOne() { Messagebox.Show("Hello World"); } } }
Что я уже пробовал:
Я сделал некоторые перечитывания о dll но не могу найти никаких других
Richard Deeming
Вы добавляете ссылку в Visual Studio или пытаетесь скомпилировать ее с помощью csc.exe
командная строка?
Goober S. Johnsson
У меня уже есть он в VS, я пытаюсь добавить его через
параметры.ReferencedAssemblies.Добавить("PresentationFramework.dll");