P.S: Windows 10 x64
Пытаюсь скомпилировать программу из билдера но получаю ошибку: Исходники: Stub + Builder
Вот код программы:
Stub:
using System;
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("[Title]")]
[assembly: AssemblyDescription("[Description]")]
[assembly: AssemblyCompany("[Company]")]
[assembly: AssemblyProduct("[Product]")]
[assembly: AssemblyCopyright("Copyright © [Copyright] 2017")]
[assembly: ComVisible(false)]
[assembly: Guid("cd6d1750-58e0-4c29-94d4-6928876fa334")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
namespace Test
{
class Program
{
static void Main(string[] args)
{
Console.Title = "[TITLE_CONSOLE]";
Console.WriteLine("[TEXT]");
Console.ReadKey();
}
}
}
Builder:
using Microsoft.CSharp;
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace BuildConsole
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CreateBuild(textBox1.Text, textBox2.Text);
}
private void CreateBuild(string ConsoleTitleView, string ConsoleText)
{
var Result = Properties.Resources.Stub;
Result = Result.Replace("[Title]", "Test");
Result = Result.Replace("[Description]", "Test");
Result = Result.Replace("[Company]", "Test");
Result = Result.Replace("[Product]", "Test");
Result = Result.Replace("[Copyright]", "Test");
Result = Result.Replace("[TITLE_CONSOLE]", ConsoleTitleView);
Result = Result.Replace("[TEXT]", ConsoleText);
var providerOptions = new Dictionary<string, string> { { "CompilerVersion", "v4.5" } };
CompilerResults results;
using (var provider = new CSharpCodeProvider(providerOptions))
{
var Params = new CompilerParameters { OutputAssembly = $"{Directory.GetCurrentDirectory()}/build.exe", GenerateExecutable = true, CompilerOptions = "/t:winexe" };
Params.ReferencedAssemblies.Add("System.dll");
results = provider.CompileAssemblyFromSource(Params, Result);
}
if (results.Errors.Count == 0)
{
MessageBox.Show("Good");
}
foreach (CompilerError compilerError in results.Errors)
{
MessageBox.Show(compilerError.ErrorText);
}
}
}
}
А мне пишет что:
Невозможно найти исполняемый файл компилятора csc.exe
Как можно решить эту проблему? ( желательно с CodeDom компилятором )
Ваш пример у меня выдаёт такую же ошибку.
Ошибка пропадает, когда я ставлю "CompilerVersion", "v3.5" }
.
Win10 + VS2015 + VS2017.
Проблема явно в путях: csc.exe от 4.5 не прописан в Path, подозреваю, что если добавить, то всё пройдёт на ура.
Ну или взять машину без студии, поставить на неё только .Net Framework 4.5 и прописать в Path -- то же будет работать.
Любопытно: посмотрел Path на своей машине -- не вижу ничего ведущего в c:\Windows\Microsoft.NET\Framework\vX.X.XXX
или c:\Windows\Microsoft.NET\Framework64\vX.X.XXX
(там лежит csc.exe)
Зато в Path есть C:\Program Files\dotnet\
и похоже я отстал от жизни, надо будет почитать про Roslyn
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как узнать параметр vmpath в VMware для операции клонирования? https://codevmware
Недавно начал изучать это адский комбайн и уткнулся в то, что, при компиляции кода, если студии что-то не нравится, код просто не будет скомпилированВ...
Есть задача, сделать автоматическую авторизацию на сайтеИспользую CEFSHARP v