У меня есть проект WiX в Visual Studio 2010, который использует встроенную задачу MSBuild для установки переменной окружения в «BeforeBuild» Target. Пользовательская задача, ранее построенная без проблем; однако теперь я получаю ошибки в построении, даже несмотря на то, что проект/решение не изменилось вообще со времени последней успешной сборки. Фактически, тот же код строит правильно на другой машине разработчиков ...Невозможно создать встроенную задачу построения с помощью CodeTaskFactory (ошибка сборки MSB3758 и CS0012)
Если я строю проект из командной строки, он также строит правильно. Это заставляет меня думать, что среда VS 2010 может быть как-то испорчена?
С момента последнего строительства проекта я установил несколько программ (VS 2015, .NET Core и т. Д.). Будет ли ремонт VS 2010 вариантом? У меня установлен VS 2010 SP1.
Обычай задача определяется инлайн в файле проекта:
<!-- Define task to set environment variables for the current process -->
<UsingTask TaskName="SetEnvironmentVariableTask" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll">
<ParameterGroup>
<Name ParameterType="System.String" Required="true" />
<Value ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Using Namespace="System" />
<Code Type="Fragment" Language="cs"><![CDATA[
Environment.SetEnvironmentVariable(Name, Value, EnvironmentVariableTarget.Process);
]]></Code>
</Task>
</UsingTask>
И называется в, прежде чем строить цели:
<Target Name="BeforeBuild">
<SetEnvironmentVariableTask Name="WIX_TEMP" Value="$(MSBuildProjectDirectory)\$(IntermediateOutputPath)" />
</Target>
Ошибка сборки:
Initializing task factory "CodeTaskFactory" from assembly "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll".
error MSB3758: An error has occurred during compilation
error CS0012: The type 'Microsoft.Build.Framework.ITask' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
UPDATE 2017-01-19
Я попытался с помощью предложения Эмилио ниже; Однако, похоже, переменные MSBuild не быть установлен правильно (я использовал <Message>
элемент для вывода их в процессе сборки):
MSBuildExtensionsPath = 'C:\Program Files (x86)\MSBuild'
MSBuildAssemblyVersion = ''
MSBuildToolsPath = 'C:\Windows\Microsoft.NET\Framework\v4.0.30319'
Кроме того, если Я смотрю в папке C:\Program Files (x86)\MSBuild
, я вижу только подпапки для VS 2013 (12.0) и VS 2015 (14.0), а не для VS 2010 (10.0) ... Хотя я не уверен, что именно там VS 2010 будет устанавливать MSBuild материал?
По вашему описанию, я создаю простой consoleApp демо с инлайн сборки задачи вы проводки с помощью Visual Studio 2010 sp1, он хорошо работает, пожалуйста, поделитесь простой демо с мог воспроизведите проблему через OneDrive .. –
@ ColeWu-MSFT Как указано в вопросе, я знаю, что задача сборки компилируется нормально.По какой-то причине моя среда VS 2010 выглядит коррумпированной. Я попытаюсь восстановить VS 2010 ... –
Вы разрешаете проблему после восстановления vs2010? если проблема все еще существует, пожалуйста, не стесняйтесь, дайте мне знать. Если проблема решена, отправьте ответ и отметьте его как ответ, это будет полезно для другого сообщества. –