Вы можете перепрыгнуть через обручи и преобразовать свое решение в вызов lapply
, sapply
или apply
. (Я вижу, что @jonw показывает один способ сделать это.) Кроме того, что у вас уже есть вполне приемлемый код.
Если это все временные ряды или аналогичные, то подходящей альтернативой может быть следующее: который отображает каждую серию в своей собственной панели на одном участке графика. Мы используем пакет zoo
, поскольку он отлично обрабатывает упорядоченные данные.
require(zoo)
set.seed(1)
## example data
dat <- data.frame(X = cumsum(rnorm(100)), Y = cumsum(rnorm(100)),
Z = cumsum(rnorm(100)))
## convert to multivariate zoo object
datz <- zoo(dat)
## plot it
plot(datz)
Что дает: [/g0]
Сегодня у меня была такая же ошибка (отсутствует точно такой же пакет). Я также создал проект MVC + Web API.
Это произошло потому, что я переместил файлы приложений (включая файл .csproj) в другое место. Я вручную обновил файл .sln, но теперь все зависимости пакетов (Visual Studio 2015) хранятся в файле .csproj.
Редактирование файла .csproj и исправление относительного пути к папке решения (которая содержит папку пакетов) решила проблему для меня.
Комментировать параметр компилятора в WebConfig
:
<!--<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>-->
Обновить последнюю версию пакетов в файле конфигурации пакета
blockquote><package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.4" targetFramework="net452" />
Восстановить, если все нормально, нет необходимости продолжать, иначе щелкните правой кнопкой мыши проект, нажмите «выгрузить проект». Щелкните правой кнопкой мыши проект и отредактируйте файл .csproj
. Проверьте путь Codedom, у него не было net45 в предыдущих путях, добавьте это вручную, сохраните, загрузите, перестройте. Он должен работать.
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.4\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
Чтобы развернуть несколько ответов, да, вы можете удалить следующий файл из файла .csproj:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
, и это устраняет проблему, однако в моем случае я заметил, что у меня были дополнительные ссылки на .NET.Compilers и .CodeDom.Providers с разными версиями:
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.0.1
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\
Когда мой файл package.config ссылался только на следующее:
<package id="Microsoft.Net.Compilers" version="2.0.1"
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3"
Удаление элементов 1.0.0 из файла .csproj устраняет проблему.
Для меня мой файл gitignore игнорировал мою папку с папками. Следующая строка gitignore вызывала проблему -
**/packages/*
Удалена и она восстановила папку моих пакетов. Надеюсь, это помогает кому-то другому.
Не уверен, что это поможет кому-либо, но у меня возникла эта проблема, когда я удалил исходный код с моей локальной машины, не сохранив файл решения в TFS. (Во время начальной разработки я щелкнул правой кнопкой мыши и проверил проект в обозревателе решений, но забыл когда-либо проверять само решение.) Когда мне нужно было работать над этим снова, все, что у меня было в TFS, было .csproj-файл, no .sln file. Поэтому в VS я сделал File -> Source Control -> Advanced - Open from Server и открыл файл .csproj. Оттуда я сделал «Сохранить все», и он спросил, где я хочу сохранить файл .sln. Я сохранил этот .sln-файл в каталоге проекта с другими папками (App_Data, App_Start и т. Д.), А не с каталогом верхнего уровня. Я, наконец, понял, что мне нужно сохранить файл .sln в каталог из папки проекта, чтобы он находился на том же уровне, что и папка проекта. Все мои пути решены, и я смог построить его снова.
Для меня пакеты были там по правильному пути, но папки сборки внутри папки пакета не были. Я просто удалил все пакеты, которые, по его словам, отсутствовали, и перестроил решение, и он успешно создал папки сборки и файлы .props. Таким образом, сообщения об ошибках были правильными, сообщив мне, что что-то было пропущено.
Сочетание двух ответов сработало для меня. Сначала я модифицировал файл .csproj, чтобы удалить ссылку на версию 1.0.0
< Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild" >
----Error---
< /Target>
, а затем сделал
Update-Package -Reinstall
из файла и работал.
Для меня проблема заключалась в том, что когда я скопировал решение в новую папку и открыл его, в нем отсутствовала папка Nuget, как показано ниже. Я скопировал эту папку, и все сработало. Примечание. Эта же папка была в нашем исходном элементе управления, но не в этом проекте решений, это был один каталог.
Для разработчиков DevOps / build вы, вероятно, можете исправить этот запуск nuget restore
в отношении затронутого SLN или проекта, если вам не хватает SLN. Я должен сделать это для наших сборников CI / CD для всех наших проектов UWP.
call "%VS140COMNTOOLS%VsDevCmd.bat"
или VS2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
call nuget restore MyStuff.SLN
или call nuget restore MyStuff.csproj
, если нет SLN. Для всех, кто спотыкается здесь с проблемой, которую я имел (некоторые, но не все пакеты восстанавливаются на сервере сборки), последний фрагмент головоломки для меня заключался в добавлении NuGet.config в корень моего решения, .SLN-файл, как Дэвид Эббо, объяснил здесь: http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html .
Из сообщения блога Ebbo, содержимое файла для меня просто
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>
UPDATE:
URL-адрес API NuGet изменен для v3 (текущий по состоянию на сентябрь 2016 года) , Из https://www.nuget.org/
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
Я использую VS2012 и сталкиваюсь с той же ошибкой. Я удалил следующий тег Target из файла .csproj и начал компилировать без каких-либо ошибок.
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
-- Error messages within Target Tag
</Target>
Я решил эту проблему, удалив следующий код из файла .csproj
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\Assemblies\NuGet\SpecFlow.Plus.Excel.1.4.2\build\SpecFlow.Plus.Excel.targets'))" />
У меня была эта проблема как неудачная сборка в Azure, когда она была развернута из Git.
Оказывается, мой .gitignore исключает папку build
из ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props
.
После того, как папка build
была (сила) передана Git, проблема была решена.
Я не мог найти никаких решений для этого, поэтому я добавил копию файла nuget.exe и powershell в корневую директорию решения с именем prebuild.ps1 со следующим контентом.
$nugetexe = 'nuget.exe'
$args = 'restore SOLUTION_NAME_HERE.sln'
Start-Process $nugetexe -ArgumentList $args
Я назвал этот сценарий powershell в моей сборке в пути к сценарию Pre-Build
Просто включите восстановление пакета NuGet. Щелкните правой кнопкой мыши свое решение> выберите «Включить восстановление пакета NuGet».
Это создаст папку .nuget с файлом NuGet.Config и устранит проблему .
Решение, которое работает в моем случае - Visual Studio 2015 Enterprise, проект .NET 4.6.1
Вы также можете использовать предлагаемое сообщение об ошибке как подсказку. Вот как это сделать, найдите «Управление пакетами для решения» и нажмите «Удалить пакет nuget».
Это он
Сообщение об ошибке полностью корректно. Я пробовал все трюки, и никто не работал. Проект (простой тест MVC Web App) перенесен из Windows 8.1 VS 2015 Community в новый тестовый ящик в Windows 10. Были применены все последние обновления VS 2015. Я даже не мог установить более новую версию пакета компиляторов.
Loop:
<LOOP>This seems to be a Ground Hog Day phenomena.</LOOP>
GoTo Loop
Я, наконец, просто скопировал Microsoft.Net.Compilers.1.0.0 из старого проекта в новый, и он сработал. Затем я мог бы начать обновлять другие пакеты до более новой версии. Похоже на ошибку процесса обновления проекта nuget.
ПРИМЕЧАНИЕ. Исходный проект был создан в VS 2015 и не имеет никаких устаревших методологий nuget.
Проблема для меня заключалась в том, что NuGet не смог автоматически получить / обновить пакеты, потому что полный путь к файлу будет слишком большим. Исправлено перемещением моего решения в папку в моих Документах вместо глубоко вложенной папки.
Затем можно щелкнуть правой кнопкой мыши по решению и выбрать «Восстановить пакеты NuGet» (что, вероятно, не обязательно, если вы просто создаете это и пусть это сделает это для вас), а затем выберите «Управление пакетами NuGet для решения», чтобы все пакеты были обновлены до последней версии.
Это было сделано для решения примера приложения ASP MVC, загруженного с веб-сайта Microsoft.
Если у вас есть еще один недостающий пакет nuget, который дает вашу ошибку при создании вашего решения, используйте следующую команду, используя командную консоль Nuget из меню «Инструменты»> «Диспетчер пакетов Nuget»> «Диспетчер пакетов». Он переустанавливает ваши текущие пакеты.
Update-Package -reinstall
BEWARE - это пакеты обновлений для всего решения, а не только проекта.
Я имел это точное расстраивает сообщение. Что в конечном итоге сработало для меня, это удаление всех файлов и папок внутри / пакетов и разрешение VS повторно извлечь все следующую сборку.
Как многие предлагали удалить тэг <Target>
, могут сделать его компилируемым. Тем не менее, остерегайтесь того, что это имеет побочный эффект, когда вы делаете это для тестовых проектов.
Во время компиляции я получил ошибку, связанную с пакетом nget MSTest.TestAdapter
nuget. Устранена эта проблема, удалив тэг <Target>
. Несмотря на то, что он сделал успешную сборку, методы тестирования стали недоступными для поиска. Тест-проводник не будет перечислять методы тестирования в этом проекте, а тест проб или отладки не будет работать.
Я столкнулся с этим при использовании Visual Studio 2017
и .Net framework 4.7
, это может произойти в других версиях
Тибериу прав. Мне пришлось отредактировать файл .csproj, когда файлы были перемещены и вызвали эту проблему.
<Import Project="..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
Я изменил верхнюю часть файла и внизу
<Error Condition="!Exists('..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.1\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
Мина работала, когда я скопировал папку с папкой решения и папку проекта. Я просто не копировал папку с предыдущего места.
Я решил проблему, удалив этот код из файла .csproj
:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>