Error msb3021 не удалось скопировать файл

When using TeamCity to compile my MSBuild XML task script, it fails with this: [10:43:03]: myWebProject1 myWebProject 1 .csproj (3s) [10:43:07]: [ myWebProject1 myWebProject1 .csproj]

When using TeamCity to compile my MSBuild XML task script, it fails with this:

[10:43:03]: myWebProject1 myWebProject 1 .csproj (3s)
[10:43:07]: [ myWebProject1 myWebProject1 .csproj] _CopyWebApplicationLegacy
[10:43:07]: [_CopyWebApplicationLegacy] Copy
[10:43:07]: [Copy] C:Program FilesMSBuildMicrosoftVisualStudiov10.0WebApplicationsMicrosoft.WebApplication.targets(131, 5): error MSB3021: Unable to copy file "objReleasemyWebProject1.dll" to "C:MSBUILDRELEASEmyWebProject1\binmyWebProject1.dll". Could not find file 'objReleasemyWebProject1.dll'.

When I run it locally, it works.

When I compare my local output to my build server output, there are files missing on my build server. Like the global.asax file is missing from my build server output directory (but not when I compile this locally). Why is that?

Here is my current MSBuildScript:

<?xml version="1.0" encoding="utf-8"?>
<Project
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  ToolsVersion="4.0"
  DefaultTargets="Build">

  <PropertyGroup>
    <OutputDir>C:MSBUILDRELEASE</OutputDir>
  </PropertyGroup>

  <ItemGroup>
    <ProjectToBuild Include="UtilityApp.sln" >
      <Properties>OutputPath=$(OutputDir);Configuration=MSBuildRelease;Platform=x86</Properties>
    </ProjectToBuild>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild Projects="@(ProjectToBuild)"/>
            <CallTarget Targets="Publish WebProject1" />
            <CallTarget Targets="Publish WebProject2" />  
  </Target>

<Target Name="Publish WebProject1">
 <RemoveDir Directories="$(OutputFolder)"
       ContinueOnError="true" />
 <MSBuild Projects="WebProject1WebProject1.csproj"
      Targets="ResolveReferences;_CopyWebApplication"
      Properties="WebProjectOutputDir=$(OutputDir)WebProject1;
      OutDir=$(OutputDir)WebProject1;Configuration=Release;Platform=AnyCPU" />
</Target>

<Target Name="Publish WebProject2">
 <RemoveDir Directories="$(OutputFolder)"
       ContinueOnError="true" />
 <MSBuild Projects="WebProject2WebProject2.csproj"
      Targets="ResolveReferences;_CopyWebApplication"
      Properties="WebProjectOutputDir=$(OutputDir)WebProject2;
      OutDir=$(OutputDir)WebProject2;Configuration=Release;Platform=AnyCPU" />
</Target>

</Project>

I can run this script locally and it seems to work fine (no errors generated). When I run it on my build server, it fails with MSBuild error MSB3021.

Now when I compare my local build output files to my server build output files, the server output does not have as many files. For instance, the global.ASAX file is missing in the output on my buildserver. Why would it work local for me, but not on my TeamCity build server? What’s the difference and how can I fix it?

I noticed the TeamCity build agent error message has a funny directory path:
«C:MSBUILDRELEASEmyWebProject1binmyWebProject1.dll»

^ There are two slashes before the bin folder. I do not specify that anywhere. What gives? I have a feeling I am not building my Web Projects correctly (maybe use a different task approach?). It seems to work locally but not on my build server.

Am I building my web projects correctly? These are simply web projects for Web Service (ASMX) deployment. Help?

9 / 9 / 2

Регистрация: 25.11.2012

Сообщений: 115

1

05.12.2013, 08:26. Показов 8104. Ответов 9


При попытке сборки проекта или решения в режиме Debug вылетает ошибка «не удалось скопировать файл «objDebugPrintMed.exe» в «binDebugPrintMed.exe». Файл ‘objDebugPrintMed.exe’ не найден. (MSB3021)».
При сборке в Release все запускается, но не срабатывают точки останова. Мне необходимо запустить отладку.
Подскажите, как можно решить эту проблему.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



158 / 187 / 48

Регистрация: 25.11.2013

Сообщений: 978

05.12.2013, 08:29

2

ReadOnly? Или посмотри, может PrintMed.exe висит в процессах и удалить его нельзя



0



9 / 9 / 2

Регистрация: 25.11.2012

Сообщений: 115

05.12.2013, 08:31

 [ТС]

3

Цитата
Сообщение от DataPlanner
Посмотреть сообщение

ReadOnly? Или посмотри, может PrintMed.exe висит в процессах и удалить его нельзя

Нет, его нет в процессах. И в папке obj/Debug его тоже нет, как и написано в ошибке.



0



174 / 73 / 30

Регистрация: 20.11.2013

Сообщений: 358

05.12.2013, 08:39

4

скорее всего он у тебя открыт в чем то…. перезагрузи машину….



0



9 / 9 / 2

Регистрация: 25.11.2012

Сообщений: 115

05.12.2013, 08:41

 [ТС]

5

Цитата
Сообщение от Gluhov_jonik
Посмотреть сообщение

скорее всего он у тебя открыт в чем то…. перезагрузи машину….

тоже так думал, пока не перезагрузил. Перезагрузка не помогает.



0



174 / 73 / 30

Регистрация: 20.11.2013

Сообщений: 358

05.12.2013, 08:57

6

А в какой момент у тебя копирование происходит????



0



Master of Orion

Эксперт .NET

6094 / 4950 / 905

Регистрация: 10.07.2011

Сообщений: 14,522

Записей в блоге: 5

05.12.2013, 10:23

7

fadeinmad,
1. нажми rebuild сначала конкретно для проекта PrintMed, а потом для всего решения.
2. Скопируй PrintMed из папки release в папку debug.



1



9 / 9 / 2

Регистрация: 25.11.2012

Сообщений: 115

05.12.2013, 22:04

 [ТС]

8

Цитата
Сообщение от Psilon
Посмотреть сообщение

fadeinmad,
1. нажми rebuild сначала конкретно для проекта PrintMed, а потом для всего решения.
2. Скопируй PrintMed из папки release в папку debug.

Помогает на один-два раза. Затем надо процедуру проводить по новой.



0



Администратор

Эксперт .NET

9357 / 4639 / 755

Регистрация: 17.04.2012

Сообщений: 9,490

Записей в блоге: 14

05.12.2013, 22:19

9

fadeinmad, есть такая программа — Unlocker, проверяет, в чём открыта та или иная программа или файл, можете проверить, что её занимает. Также можно проверить с помощью консольной программы handle
Также один товарищ добился решения следующим способом (с MSDN):

I put the <GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies> property into the solutions Startup Project’s csproj file as the first Property in the first PropertyGroup and since then I haven’t had the problem. (fingers crossed)



1



158 / 187 / 48

Регистрация: 25.11.2013

Сообщений: 978

05.12.2013, 22:25

10

Цитата
Сообщение от fadeinmad
Посмотреть сообщение

Помогает на один-два раза. Затем надо процедуру проводить по новой.

Отключи АВ



0



  • Remove From My Forums
  • Question

  • hi

    when i try to build my solution in vs2005 . i get this error from time to time

    Compile complete — 0 errors, 0 warnings

    C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Microsoft.Common.targets(2313,9): error MSB3021: Unable to copy file «objDebugConfig.dll» to «binDebugConfig.dll». The process cannot access the file ‘binDebugConfig.dll’ because it is being used by another process.

    Done building project «Config.csproj» — FAILED.

    as chack this file i can see the only process using it is Vs2005

    D:downloadHandle>handle config.dll

    Handle v3.11
    Copyright (C) 1997-2005 Mark Russinovich
    Sysinternals — www.sysinternals.com

    devenv.exe         pid: 1612    7F8: C:Documents and SettingsAmitKLocal SettingsApplication DataMicrosoftVisualStudio8.0ProjectAssembliesbgplnu7n01Config.dll
    devenv.exe         pid: 1612    948: C:Documents and SettingsAmitKLocal SettingsApplication DataMicrosoftVisualStudio8.0ProjectAssembliesert0qo0t01Config.dll
    devenv.exe         pid: 1612    AD8: D:devConfigbinDebugConfig.dll

    D:downloadHandle>

    so how can i work around this problam ?

    amit kuzi

Answers

  • Jakob,

    If you’re still having this problem the best thing at this point is to file a bug using the directions at the top of the forum. We’ll most likely need a minimal repro case that works on any machine that you can zip up and share.

    Thanks in advance

    Dan

  • Remove From My Forums
  • Question

  • hi

    when i try to build my solution in vs2005 . i get this error from time to time

    Compile complete — 0 errors, 0 warnings

    C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Microsoft.Common.targets(2313,9): error MSB3021: Unable to copy file «objDebugConfig.dll» to «binDebugConfig.dll». The process cannot access the file ‘binDebugConfig.dll’ because it is being used by another process.

    Done building project «Config.csproj» — FAILED.

    as chack this file i can see the only process using it is Vs2005

    D:downloadHandle>handle config.dll

    Handle v3.11
    Copyright (C) 1997-2005 Mark Russinovich
    Sysinternals — www.sysinternals.com

    devenv.exe         pid: 1612    7F8: C:Documents and SettingsAmitKLocal SettingsApplication DataMicrosoftVisualStudio8.0ProjectAssembliesbgplnu7n01Config.dll
    devenv.exe         pid: 1612    948: C:Documents and SettingsAmitKLocal SettingsApplication DataMicrosoftVisualStudio8.0ProjectAssembliesert0qo0t01Config.dll
    devenv.exe         pid: 1612    AD8: D:devConfigbinDebugConfig.dll

    D:downloadHandle>

    so how can i work around this problam ?

    amit kuzi

Answers

  • Jakob,

    If you’re still having this problem the best thing at this point is to file a bug using the directions at the top of the forum. We’ll most likely need a minimal repro case that works on any machine that you can zip up and share.

    Thanks in advance

    Dan

Содержание

  1. Error msb3021 не удалось скопировать файл
  2. Asked by:
  3. Question
  4. All replies
  5. Ошибка MSBuild MSB3021: невозможно скопировать файл. Не удалось найти файл ‘ objReleasemyWebProject1.ДЛЛ’
  6. 6 ответов
  7. Ошибка MSBuild MSB3021: невозможно скопировать файл. Не удалось найти файл ‘objReleasemyWebProject1.dll’
  8. Ошибка MSBuild MSB3021: невозможно скопировать файл. Не удалось найти файл obj Release myWebProject1.dll
  9. 11 ответы

Error msb3021 не удалось скопировать файл

Asked by:

Question

I am getting this below given below during TFS build

C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(3513,5): error MSB3021: Unable to copy file «C:xxxSharedLibrariesMicrosoft.Practices.Modeling.Common.dll» to «C:xxxBinariesMicrosoft.Practices.Modeling.Common.dll». Access to the path ‘C:xxxBinariesMicrosoft.Practices.Modeling.Common.dll’ is denied.

It is giving an error while trying to copy dll from shared reference folder to build binaries folder.

I am getting this issue for only one particular project in the solution and it is giving this error for any random dll for each builds

Please help and advise

Ahmed is an independent consultant in Ottawa, Canada specialized in .NET, Biztalk, WCF, WPF, TFS and other Microsoft technologies.

We too often get this error message, and typically only on binary files (e.g. DLL files). For us simply relaunching the build usually fixes the problem.

Do you have your build definition’s Process -> Basic -> Clean Workspace property set to All (so that it deletes all files before trying to copy files to it)? If the DLL is still in use by some other process you may not be able to overwrite it.

— Dan — «Can’t never could do anything»

Thanks for your reply.

No I am not using any pre/post build scripts for the project. But I am passing the reference path as an MSBuild Argument to the build process

Thanks for you reply.

Yes, I have set build definition’s Process -> Basic -> Clean Workspace property set to All.

Is this causing the problem?

Does C:xxxSharedLibraries = C:BuildsXXXMain_CISourcesSharedLibraries?

Are you including the SharedLibraries folder in the workspace screen as Active not Cloaked

Ideally you want to use relative path instead of absolute path

Ahmed is an independent consultant in Ottawa, Canada specialized in .NET, Biztalk, WCF, WPF, TFS and other Microsoft technologies.

This problem occurs when the Shared Libraries are checked in to Source Control. You should have a AfterGet target for removing the READ ONLY attribute.

P.S.: Found this for VS 2008. Should be similar for 2010.

I had the made changes as mentioned in your above post. Used relative path instead of absolute path for MSBuild argument.

But still I am getting the same error.

Hope you are doing fine 🙂

Can you tell me how to make the AfterGet target change in 2010, as we are not using the .proj file for the build.

Ahmed is an independent consultant in Ottawa, Canada specialized in .NET, Biztalk, WCF, WPF, TFS and other Microsoft technologies.

Yes, the C:BuildsXXXMain_CISourcesSharedLibraries folder does exists. And it is copied from source control to the source folder.

You can add a Invoke Process activity to remove the read-only attributes after the Get Workspace activity in your build process template.

Below should be the property values of Invoke Process activity.

All fine here, Irfan.

I was under the impression that you are using the Upgrade Template for the builds.

Scroll down to Jehan33’s reply and try that.

Thanks for the reply.

I dont think this issue is due to the readonly file attribute. Because going through the log file, I also found the below warning

12>C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(3513,5): warning MSB3026: Could not copy «C:BuildsMadagascarMain_CISourcesSharedLibrariesMicrosoft.Practices.Services.Itinerary.DslPackage.dll» to «C:BuildsXXXMain_CIBinariesMicrosoft.Practices.Services.Itinerary.DslPackage.dll». Beginning retry 1 in 1000ms. The process cannot access the file ‘C:BuildsXXXMain_CIBinariesMicrosoft.Practices.Services.Itinerary.DslPackage.dll’ because it is being used by another process.

Try SysInternals’ ProcessExplorer to find which process is locking the file.

Источник

Ошибка MSBuild MSB3021: невозможно скопировать файл. Не удалось найти файл ‘ objReleasemyWebProject1.ДЛЛ’

при использовании TeamCity для компиляции моего сценария задачи MSBuild XML происходит сбой:

когда я запустить его локально, он работает.

когда я сравниваю свой локальный вывод с выводом сервера сборки, на моем сервере сборки отсутствуют файлы. Как Глобал.файл asax отсутствует в моем выходном каталоге сервера сборки (но не при компиляции этого локально). Почему так?

вот мой текущий MSBuildScript:

Я могу запустить этот скрипт локально и, кажется, работает нормально (без ошибок). Когда я запускаю его на своем сервере сборки, он терпит неудачу с ошибкой MSBuild MSB3021.

теперь, когда я сравниваю свои локальные выходные файлы сборки с выходными файлами сборки сервера, на выходе сервера не так много файлов. Например, глобальный.Файл ASAX отсутствует в выходных данных на моем buildserver. Почему он будет работать локально для меня, но не на моем сервере сборки TeamCity? Какая разница и как я могу это исправить?

Я заметила Сообщение об ошибке агента сборки TeamCity имеет забавный путь к каталогу: «C:MSBUILDRELEASEmyWebProject1binmyWebProject1.DLL-файл»

^ перед папкой bin есть две косые черты. Я нигде этого не указываю. Что происходит? У меня такое чувство, что я не строю свои веб-проекты правильно (может быть, использовать другой подход к задаче?). Это, кажется, работает локально, но не на моем сервере сборки.

правильно ли я создаю свои веб-проекты? Это просто веб-проекты для веб-службы (ASMX) развертывание. Помочь?

6 ответов

потратив 3 часа на эту ошибку, я начал новый проект и я импортировал каждый файл из старого проекта по одному. Я смог скомпилировать между каждым файлом, пока не добавил последний файл.

Я думал, что проблема связана с этим последним файлом, но я понял, удалив другие файлы, что эта проблема возникает только тогда, когда у меня есть определенное количество файлов, включенных в мой проект.

Я не могу сказать, почему это сработало, но я решил эту проблему, добавив / удалив пустые классы со случайными именами для моего проекта.

после пары добавления / компиляции / удаления / компиляции снова VS начал работать правильно.

просто догадка, но я заметил, что вы создаете решение с Platform=x86, а затем вызываете два веб-проекта с Platform=AnyCPU. Если эти два проекта создаются решением, расположение вывода может отличаться для сборки и последующего вызова для развертывания.

некоторые другие Примечания:

Я обычно избегаю CallTarget и предпочел бы эту форму в вашем случае:

двойные косые черты обычно указывают на один из двух вещи:

либо промежуточное свойство не было оценено, если $(Intervening) пусто, либо одна из частей пути уже заканчивается конечной косой чертой, если свойство $(OutDir) уже имеет конечную косую черту.

Я никогда не знал, что у вас могут быть пробелы в целевом имени, я должен был проверить его, чтобы быть уверенным, и это сработало!

У меня была эта проблема при попытке развертывания в appharbor, для меня, исключая файл, затем повторно включая его Исправлена проблема

в то время как у меня была такая же ошибка; в моем случае у меня был Wix (v3.9) проект развертывания (MSI-для настольного приложения), который запускал Heat.exe для сбора файла из выходной папки. Оказалось, что VS и Heat не играют хорошо, если у вас нет

атрибут, установленный в задаче предварительной сборки каталога Heat. Нашел это после многих часов разочарования. см.Wix HeatFile Задача Блокировки Dll для сведения. HTH кто-то.

Шаг 1: перезагрузите ваш визуальный студии.

Шаг 2: Сборка > > перенастроить приложение.

Источник

Ошибка MSBuild MSB3021: невозможно скопировать файл. Не удалось найти файл ‘objReleasemyWebProject1.dll’

При использовании TeamCity для компиляции моей задачи MSBuild XML script он не работает с этим:

Когда я запускаю его локально, он работает.

Когда я сравниваю свой локальный вывод с выходом моего сервера сборки, на моем сервере сборки отсутствуют файлы. Как и файл global.asax, отсутствует в моем выходном каталоге сервера сборки (но не тогда, когда я его компилирую локально). Почему это?

Вот мой текущий MSBuildScript:

Я могу запустить этот script локально и, похоже, работает нормально (никаких ошибок не генерируется). Когда я запускаю его на моем сервере сборки, он терпит неудачу с MSBuild ошибкой MSB3021.

Теперь, когда я сравниваю свои локальные файлы сборки с моими файлами вывода на сервер, на выходе сервера не так много файлов. Например, файл global.ASAX отсутствует в выводе на моем сервере buildserver. Почему он будет работать локально для меня, но не на моем сервере сборки TeamCity? Какая разница и как я могу это исправить?

Я заметил, что сообщение об ошибке агента сборки TeamCity имеет забавный путь к каталогу:
«C:MSBUILDRELEASEmyWebProject1BinmyWebProject1.dll»

^ Перед папкой bin есть две слэши. Я не указываю это нигде. Что дает? У меня такое чувство, что я не правильно строю свои веб-проекты (возможно, используйте другой подход к задаче?). Кажется, он работает локально, но не на моем сервере сборки.

Я правильно строю свои веб-проекты? Это просто веб-проекты для развертывания Web-сервиса (ASMX). Помощь?

Источник

Ошибка MSBuild MSB3021: невозможно скопировать файл. Не удалось найти файл obj Release myWebProject1.dll

При использовании TeamCity для компиляции моего сценария задачи MSBuild XML происходит сбой:

Когда я запускаю его локально, он работает.

Когда я сравниваю свой локальный вывод с выводом моего сервера сборки, на моем сервере сборки отсутствуют файлы. Как и файл global.asax, которого нет в выходном каталоге моего сервера сборки (но не тогда, когда я компилирую его локально). Это почему?

Вот мой текущий MSBuildScript:

Я могу запустить этот сценарий локально, и, похоже, он работает нормально (ошибок не возникает). Когда я запускаю его на своем сервере сборки, он выдает ошибку MSBuild MSB3021.

Теперь, когда я сравниваю свои локальные выходные файлы сборки с выходными файлами сборки сервера, на выходе сервера не так много файлов. Например, на моем сервере сборки отсутствует файл global.ASAX. Почему он будет работать у меня локально, а не на моем сервере сборки TeamCity? В чем разница и как исправить?

Я заметил, что в сообщении об ошибке агента сборки TeamCity указан забавный путь к каталогу: «C: MSBUILDRELEASE myWebProject1 bin myWebProject1.dll»

^ Перед папкой bin стоит две косой черты. Я нигде не уточняю. Что дает? У меня такое чувство, что я неправильно строю свои веб-проекты (может быть, я использую другой подход к задаче?). Кажется, он работает локально, но не на моем сервере сборки.

Правильно ли я создаю свои веб-проекты? Это просто веб-проекты для развертывания веб-службы (ASMX). Помощь?

задан 01 марта ’11, 14:03

У меня похожие проблемы. Похоже, это связано с проблемой того, где также скомпилированы библиотеки DLL. Если Configuration = Release, файлы выводятся в obj Release , а если Configuration = Debug, они выводятся в obj Debug . Но если у вас есть Configuration = SomethingElse, мои файлы выводятся в obj SomethingElse, но MSBuild по-прежнему смотрит на obj Release. Моя конфигурация «SomethingElse» была скопирована из конфигурации Release . Почему она не смотрит в нужную папку? Думаю, это проблема с целью _CopyWebApplicationLegacy для VS2010. — Carl

Я посоветовал вам удалить все файлы и папки в папке obj на машине разработки и попробовать снова запустить скрипт msbuild. Я полагаю, если ваша проблема похожа на мою, вы получите ту же ошибку на своем локальном компьютере, что и на своем сервере сборки. — Carl

Другая ситуация, с которой я столкнулся, заключается в том, что рассматриваемые файлы помечены как ReadOnly. В моем случае другая DLL возникла в системе управления версиями, таким образом, ReadOnly. Когда я удалил ReadOnly из DLL, проблема исчезла. MSBuild не будет копировать файлы поверх себя, если они доступны только для чтения. — John Dyer

11 ответы

Хорошо, я разобрался. Это несоответствие «конфигурации». У вас есть один проект, построенный с помощью Configuration = MSBuildRelease, и два других проекта, построенных с Configuration = Release. Затем MSBuild ищет «промежуточные» сборки не в том месте.

Измените свой код на этот:

ответ дан 26 мар ’11, в 17:03

На самом деле я не смог это проверить. В итоге я использовал CruiseControl.NET для создания своего .NET-решения, и это сработало намного проще. Поддержка TeamCity была очень медленной и продолжала винить Microsoft. Поддержка Microsoft возложила бы на них вину. Вместо этого CruiseControl.NET был запущен и создал мое приложение за несколько часов. В конечном итоге я могу перейти на TeamCity, поскольку я использую TeamCity для создания своих проектов FLEX и FLASH. Кто знает, но я отмечаю ваш ответ как правильное решение. — D3vtr0n

Время от времени я наблюдаю аналогичную ошибку MSBuild, хотя для меня это всегда связано с копированием из binDebugMyProject.dll в binDebugMyProject.dll который внезапно начинает выходить из строя для нескольких сборок в некоторые дни. Это как-то связано с конфигурациями, так как переключение затронутых проектов на Выпуск вместо Отлаживать (который в противном случае установлен для всех проектов в решении) предотвратит возникновение проблемы. Еще не уверен, как удовлетворительно решить проблему, но спасибо за подсказку о конфигурациях. — ИЛИ Картограф

Спасибо. Решил мою проблему, изменив вывод моего релиза на то, куда указывал вывод отладки. Если бы эта ошибка возникла после того, как я попытался построить с использованием выпуска, отладка всегда работала. — Шейн ван Вик

этот ответ, по крайней мере, заставил меня взглянуть на конфигурации, используемые TC. Спасибо. — Хулвей

Потратив 3 часа на эту ошибку, я начал новый проект и импортировал каждый файл из старого проекта один за другим. Я смог скомпилировать каждый файл, пока не добавил последний файл.

Я думал, что проблема связана с этим последним файлом, но, удалив другие файлы, я понял, что эта проблема возникает только тогда, когда в мой проект было включено определенное количество файлов.

Я не могу сказать, почему это сработало, но я решил эту проблему, добавив / удалив в свой проект пустые классы со случайными именами.

После пары повторных операций Add / Compile / Remove / Compile VS начал работать правильно.

Просто догадка, но я заметил, что вы создаете решение с Platform = x86, а затем вызываете два веб-проекта с Platform = AnyCPU. Если эти два проекта создаются решением, выходное местоположение может отличаться для сборки и последующего вызова для развертывания.

Некоторые другие примечания:

Я обычно избегаю CallTarget и предпочел бы эту форму в вашем случае:

Двойные косые черты обычно указывают на одно из двух:

Либо промежуточное свойство не было оценено, если $ (Intervening) пусто, либо одна из частей пути уже заканчивается косой чертой в конце, если свойство $ (OutDir) уже имеет завершающую косую черту.

Я никогда не знал, что в имени цели могут быть пробелы, мне пришлось проверить это, чтобы быть уверенным, и это сработало!

ответ дан 01 мар ’11, в 18:03

Хорошо, проблема с двойной обратной косой чертой, которую я понял, она должна быть больше такой: «Properties =» WebProjectOutputDir = $ (OutputDir) WebProject1; «без конечной косой черты. Свойство OutDir требует конечной косой черты. D3vtr0n

Меня просто осенило, что в сообщении об ошибке не указан полный путь. Он пытается использовать «obj Release myWebProject1.dll». Как мне изменить это, чтобы использовать полный путь? Я указываю только два пути (WebProjectOutputDir и OutDir). Я не понимаю, где это было бы неправильно ?? — D3vtr0n

Обычно $ (OutDir) имеет значение «bin Debug», но вы, похоже, передаете папку проекта в своих вызовах задаче MSBuild в двух ваших целевых объектах публикации. Возможно ли, что вы смешиваете стандартное свойство $ (OutDir) со своим собственным пользовательским свойством $ (OutputDir)? — Брайан Кретцлер

Сегодня я установил Visual Studio 2010 (профессиональный) на свой сервер сборки. Я запустил сценарий сборки через командную строку VS. Я получаю ту же ошибку «невозможно скопировать файл» бла-бла. Это странно, потому что моя машина для разработки просто в порядке, когда строит это. Ошибок нет. Это происходит только на моем сервере сборки. Любые идеи? А как насчет файлов .target для материала _CopyWebApplication? — D3vtr0n

прикрепите диагностический журнал «/ fl /flp:v=diag;logfile=log.txt» к командной строке для обеих сборок, к сборке командной строки, которая работает, и к сборке TeamCity, которая завершилась ошибкой, а затем сравните два файла журнала. Обратите внимание на раздел для каждого проекта, в котором перечислены значения свойств и элементов. В идеале они должны быть одинаковыми, поэтому любые существенные различия могут дать ключ к разгадке. — Брайан Кретцлер

У меня была эта проблема при попытке развернуть в appharbor, для меня, исключив файл, а затем повторно включив его, исправила проблему

Источник

  • Remove From My Forums
  • Question

  • Hi,

    I am getting this below given below during TFS build

    C:WindowsMicrosoft.NETFrameworkv4.0.30319Microsoft.Common.targets(3513,5): error MSB3021: Unable to copy file «C:xxxSharedLibrariesMicrosoft.Practices.Modeling.Common.dll» to «C:xxxBinariesMicrosoft.Practices.Modeling.Common.dll».
    Access to the path ‘C:xxxBinariesMicrosoft.Practices.Modeling.Common.dll’ is denied.

    It is giving an error while trying to copy dll from shared reference folder to build binaries folder.

    I am getting this issue for only one particular project in the solution and it is giving this error for any random dll for each builds

    Please help and advise

    Thanks,

    Irfan Khan

при использовании TeamCity для компиляции моего сценария задачи MSBuild XML происходит сбой:

[10:43:03]: myWebProject1 myWebProject 1 .csproj (3s)
[10:43:07]: [ myWebProject1 myWebProject1 .csproj] _CopyWebApplicationLegacy
[10:43:07]: [_CopyWebApplicationLegacy] Copy
[10:43:07]: [Copy] C:Program FilesMSBuildMicrosoftVisualStudiov10.0WebApplicationsMicrosoft.WebApplication.targets(131, 5): error MSB3021: Unable to copy file "objReleasemyWebProject1.dll" to "C:MSBUILDRELEASEmyWebProject1binmyWebProject1.dll". Could not find file 'objReleasemyWebProject1.dll'.

когда я запустить его локально, он работает.

когда я сравниваю свой локальный вывод с выводом сервера сборки, на моем сервере сборки отсутствуют файлы. Как Глобал.файл asax отсутствует в моем выходном каталоге сервера сборки (но не при компиляции этого локально). Почему так?

вот мой текущий MSBuildScript:

<?xml version="1.0" encoding="utf-8"?>
<Project
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
  ToolsVersion="4.0"
  DefaultTargets="Build">

  <PropertyGroup>
    <OutputDir>C:MSBUILDRELEASE</OutputDir>
  </PropertyGroup>

  <ItemGroup>
    <ProjectToBuild Include="UtilityApp.sln" >
      <Properties>OutputPath=$(OutputDir);Configuration=MSBuildRelease;Platform=x86</Properties>
    </ProjectToBuild>
  </ItemGroup>

  <Target Name="Build">
    <MSBuild Projects="@(ProjectToBuild)"/>
            <CallTarget Targets="Publish WebProject1" />
            <CallTarget Targets="Publish WebProject2" />  
  </Target>

<Target Name="Publish WebProject1">
 <RemoveDir Directories="$(OutputFolder)"
       ContinueOnError="true" />
 <MSBuild Projects="WebProject1WebProject1.csproj"
      Targets="ResolveReferences;_CopyWebApplication"
      Properties="WebProjectOutputDir=$(OutputDir)WebProject1;
      OutDir=$(OutputDir)WebProject1;Configuration=Release;Platform=AnyCPU" />
</Target>

<Target Name="Publish WebProject2">
 <RemoveDir Directories="$(OutputFolder)"
       ContinueOnError="true" />
 <MSBuild Projects="WebProject2WebProject2.csproj"
      Targets="ResolveReferences;_CopyWebApplication"
      Properties="WebProjectOutputDir=$(OutputDir)WebProject2;
      OutDir=$(OutputDir)WebProject2;Configuration=Release;Platform=AnyCPU" />
</Target>

</Project>

Я могу запустить этот скрипт локально и, кажется, работает нормально (без ошибок). Когда я запускаю его на своем сервере сборки, он терпит неудачу с ошибкой MSBuild MSB3021.

теперь, когда я сравниваю свои локальные выходные файлы сборки с выходными файлами сборки сервера, на выходе сервера не так много файлов. Например, глобальный.Файл ASAX отсутствует в выходных данных на моем buildserver. Почему он будет работать локально для меня, но не на моем сервере сборки TeamCity? Какая разница и как я могу это исправить?

Я заметила Сообщение об ошибке агента сборки TeamCity имеет забавный путь к каталогу:
«C:MSBUILDRELEASEmyWebProject1binmyWebProject1.DLL-файл»

^ перед папкой bin есть две косые черты. Я нигде этого не указываю. Что происходит? У меня такое чувство, что я не строю свои веб-проекты правильно (может быть, использовать другой подход к задаче?). Это, кажется, работает локально, но не на моем сервере сборки.

правильно ли я создаю свои веб-проекты? Это просто веб-проекты для веб-службы (ASMX) развертывание. Помочь?

6 ответов


потратив 3 часа на эту ошибку, я начал новый проект и я импортировал каждый файл из старого проекта по одному. Я смог скомпилировать между каждым файлом, пока не добавил последний файл.

Я думал, что проблема связана с этим последним файлом, но я понял, удалив другие файлы, что эта проблема возникает только тогда, когда у меня есть определенное количество файлов, включенных в мой проект.

Я не могу сказать, почему это сработало, но я решил эту проблему, добавив / удалив пустые классы со случайными именами для моего проекта.

после пары добавления / компиляции / удаления / компиляции снова VS начал работать правильно.


просто догадка, но я заметил, что вы создаете решение с Platform=x86, а затем вызываете два веб-проекта с Platform=AnyCPU. Если эти два проекта создаются решением, расположение вывода может отличаться для сборки и последующего вызова для развертывания.

некоторые другие Примечания:

Я обычно избегаю CallTarget и предпочел бы эту форму в вашем случае:

<Target Name="BuildProjects">
    <MSBuild Projects="@(ProjectToBuild)" />
</Target>
<Target Name="Build"
    DependsOnTargets="BuildProjects;Publish WebProject1;Publish WebProject2"
    />

двойные косые черты обычно указывают на один из двух вещи:

$(OutDir)$(Intervening)bin

либо промежуточное свойство не было оценено, если $(Intervening) пусто, либо одна из частей пути уже заканчивается конечной косой чертой, если свойство $(OutDir) уже имеет конечную косую черту.

Я никогда не знал, что у вас могут быть пробелы в целевом имени, я должен был проверить его, чтобы быть уверенным, и это сработало!


У меня была эта проблема при попытке развертывания в appharbor, для меня, исключая файл, затем повторно включая его Исправлена проблема


в то время как у меня была такая же ошибка; в моем случае у меня был Wix (v3.9) проект развертывания (MSI-для настольного приложения), который запускал Heat.exe для сбора файла из выходной папки. Оказалось, что VS и Heat не играют хорошо, если у вас нет

RunAsSeparateProcess= «true»

атрибут, установленный в задаче предварительной сборки каталога Heat. Нашел это после многих часов разочарования.
см.Wix HeatFile Задача Блокировки Dll для сведения.
HTH кто-то.


Шаг 1: перезагрузите ваш визуальный студии.

Шаг 2: Сборка > > перенастроить приложение.

Я понял это правильно.

-1

автор: Geomatik Mühendisi


Понравилась статья? Поделить с друзьями:
  • Error msb1003 укажите проект или файл решения
  • Error mqtt does not name a type
  • Error mp4 video
  • Error mp2t no data received
  • Error moving file osu что это