Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Выполнение кода из текста
     
    
Добавлено: 09.12.10 15:54
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 GODiDS
      
       
  
Суть в том что в проге нужна поддержка выполнения "скриптов"(макросов и т.п.). На сколько я понимаю, в дотнет возможно выполнение кода записанного в string, но вот как пока не разобрался. Если кто то знает, подскажите хотя бы на какие функции смотреть.
 
    
Ещё раз поясняю, есть программа, есть текстовый файлик с кодом на VB.NET, необходимо что бы программа могла заставить фрэймворк выполнить этот код (желательно что бы из кода был доступ к глобальным переменным программы, и/или он мог бы выполняться как функция, возвращающая значение в программу).
Есть идеи?
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 11
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 Artyom
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #1
       
Добавлено:  09.12.10 16:09
       
    
       
  
Есть, это возможность называется Code DOM.
 
    
Через CodeDOM строка компилируется в сборку, сборка загружается в домен.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #2
       
Добавлено:  09.12.10 16:18
       
    
       
  
Ага... Спасибо, будем рыть в сторону CodeDOM.
 
    
Если будут ещё варианты, а ещё лучше примеры, пишите.
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
 Профиль |  | #3
       
Добавлено:  09.12.10 16:30
       
    
       
  
http://msdn.microsoft.com/ru-ru/library/650ax5cx.aspx
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #4
       
Добавлено:  09.12.10 16:44
       
    
       
  
Artyom, EROS,
 
    
Спасибо, понял что в CodeDOM разбираться нужно. Только на мсдн'е с примерами туговато, щас поищу, но если у кого есть простой пример, скиньте.
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #5
       
Добавлено:  09.12.10 16:50
       
    
       
  
Вот что нарыл(вроде бы то что нужно):
 
    
http://www.codeproject.com/KB/dotnet/VBRunNET.aspx
И вот ещё примерчик, правда уже не совсем то что мне нужно, но тоже интересно:
http://www.codeproject.com/KB/dotnet/CompilingWithCodeDom.aspx
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #6
       
Добавлено:  09.12.10 16:56
       
    
       
  
Вот ещё примерчик:
 
    
http://vbcity.com/blogs/jatkinson/archive/2010/04/24/dynamically-read-compile-and-run-source-code-from-a-text-file.aspx
Ещё раз благодарю Artyom и EROS за подсказки.
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #7
       
Добавлено:  09.12.10 17:03
       
    
       
  
Ну и вот ещё отличный примерчик по теме:
 
    
http://blogs.msdn.com/b/saveenr/archive/2009/08/11/a-walkthrough-of-dynamically-compiling-c-code.aspx
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 UnDeAdZak
![]()
![]()
![]()
![]()
![]()
Вопросов: 80
Ответов: 476
      
 Профиль |  | #8
       
Добавлено:  09.12.10 21:00
       
    
       
  
Предпочитаю всё делать вручную)))
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #9
       
Добавлено:  09.12.10 21:28
       
    
       
  
UnDeAdZak, это вы к чему?
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа:
 AgentFire
![]()
![]()
![]()
ICQ: 192496851 
Вопросов: 75
Ответов: 3178
      
 Профиль |  | #10
       
Добавлено:  09.12.10 22:20
       
    
       
  
это он будет парсить типа как if CodeLine(374) = "If <condition> = <expression> Then" Then ... -_-
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа:
 GODiDS
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 1
Ответов: 7
      
 Профиль |  | #11
       
Добавлено:  10.12.10 00:36
       
    
       
  
if CodeLine(374) = "If <condition> = <expression> Then" Then