2016-10-05 7 views
1

Я создаю несколько классов по C#CodeDOM во время выполнения. Затем я включить с × файлы, которые я созданные CodeDOM в моем проекте, как это:Как программно перезагрузить проект приложения MVC во время выполнения

var p = new Microsoft.Build.Evaluation.Project(@"D:\imanSal\SmlpeApp\SmlpeApp\SmlpeApp.csproj"); 
p.AddItem("Compile", outputFileName + this.ClassName + ".cs"); 
p.Save(); 
p.Build(); 

Тогда им получение Модификация файла обнаружен предупреждение, потому что мой проект был изменен вне среды, поэтому я должен перезагрузить его. Что мне делать, если я хочу программно обновить свой проект во время выполнения? Какое лучшее решение для этого?

ответ

1

Вы можете включить дополнительные файлы для компиляции, указав их в файле проекта. Например, поместите файл динамического создания в папку Lib, затем вы можете добавить этот код в файл проекта (<Compile Include="Lib\*.cs" />),, после чего эти файлы будут включены во время сборки.

<ItemGroup> 
    <Compile Include="Class1.cs" /> 
    <Compile Include="Lib\*.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    </ItemGroup> 

Модификация файла обнаружен Варинга является особенностью Visual Studio, так что это не так, чтобы загрузить проект программно через MSBuild.

+0

спасибо ... вы подтолкнули меня вперед, но моя главная проблема по-прежнему существует. ... Можете ли вы дать мне какое-либо решение о повторном компиляционном проекте (когда некоторые изменения произошли) в iis? –

+0

или любое решение для обновления dll? или какой бы способ, который мог бы решить мою проблему? –

+0

@ImanSalehi Ваш код в порядке, просто удалите p.AddItem и p.Save. –