Неизвестная ошибка сборки файл не найден wpf

82 / 60 / 17

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

Сообщений: 1,057

1

Добавил потом удалил окно, получил ошибку

01.02.2017, 10:01. Показов 3385. Ответов 0


Студворк — интернет-сервис помощи студентам

Добрый день.

Добавил в проект «Окно» и «Страницу», потом удалил, теперь вижу такую вот ошибку

Ошибка Неизвестная ошибка сборки, «Файл ‘C:\PROJECTS\C-Sharp\WPF_PROJECTS\Composition\Composition\Page1.xaml’ не найден.»

Где у него спрятаны ссылки на эту страницу?

Не могу понять как избавится от ошибки.

Добавлено через 34 минуты
Закрыл студию, открыл студию, проблема ушла.
Сорри за спам.



1



Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

01.02.2017, 10:01

0

RRS feed

  • Remove From My Forums
  • Question

  • I had 3 XAML windows in my projet. The next, day, I delete one of them via the visual studio interface. However, when I try to compile my projet, it says ‘Could not find the file [my xaml file]’ after I deleted it. I do know how to make the compiler stop
    looking for the file

All replies

  • I had 3 XAML windows in my projet. The next, day, I delete one of them via the visual studio interface. However, when I try to compile my projet, it says ‘Could not find the file [my xaml file]’ after I deleted it. I do know how to make the compiler
    stop looking for the file

    Hi  Vindi Quartz,

    When you delete the file make sure you save the project file. What happens is the CSproj still has a compile reference to the old file path, and can’t find it.

    You can refer the following workaround: All files are saved when compilation is invoked.

    Incremental build fails after rename of XAML file

    Besides, this issue is more related to the visual studio, you can go to the
    Visual Studio General Questions forum.

    Best Regards

    Yong Lu


    MSDN Community Support
    Please remember to click «Mark as Answer» the responses that resolved your issue, and to click «Unmark as Answer» if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to
    MSDN Support, feel free to contact MSDNFSF@microsoft.com.

При сборке решения своего проекта wpf довольно часто получаю ошибку:

не удалось скопировать файл "objDebug{ProjectName}.exe" - файл не найден.

Я не первый, кто столкнулся с подобной проблемой. Пробовал много различных советов, таких, как смена версии целевой платформы, обновление .net framework, переустановка visual studio и т.д.
Единственной, что мне помогает, это перезапук visual studio (не каждый раз срабатывает).
А самое удивительное для меня, что всегда помогает изменение AssemblyVersion в файле AssemblyInfo.cs, я просто изменяю цифру в версии с 1.0.0.0 (дефолт) на 2.0.0.0 и решение собирается без ошибок, но через некоторое время ошибка появляется снова и тогда приходится изменять версию снова.

// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

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

PS: решение небольшое, состоит из одного одностраничного проекта WPF и библиотеки .dll, написанной мной, но вне данного решения, библиотека работает без проблем.
Из сторонних библиотек использую Microsoft.Toolkit.Wpf.UI.Controls для взаимодействия с картой

UPD: Данная проблема появилась и в других проектах WPF, в том числе и тех, что не используют сторонние библиотеки.
В не WPF проектах (WinForms, DLL-library, Console Application) получить ошибку так и не получилось

UPD2:
Заметил, что при сборке решения, все ошибки дублируются.
Код, вызывающий ошибку

InputErrors inputErrors = new InputErrors(initData); // конструктор не принимает аргумент initData
SaveInitDataHandler += inputErrors.InputErrors_SaveInitDataHandler //пропущено ";"

Скриношот ошибок:

@atverma

  • .NET Core Version: SDK 3.0.100-preview-009812
  • OS version: macOS Mojave v 10.14.1
  • Does the bug reproduce also in WPF for .NET Framework 4.8?: No

Problem description: After creating WPF project by running dotnet -new wpf command, dotnet build command fails with file not found errors.

Actual behavior:
A sample error is displayed below. The file exists however it seems that path separator is not correct which may be causing this build failure e.g. for root path and App.xaml.

/usr/local/share/dotnet/sdk/3.0.100-preview-009812/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.WinFX.targets(243,9): error BG1002: File ‘/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFAppApp.xaml’ cannot be found. [/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFApp/MyWPFApp.csproj]
/usr/local/share/dotnet/sdk/3.0.100-preview-009812/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.WinFX.targets(243,9): error BG1002: File ‘MainWindow.xaml’ cannot be found. [/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFApp/MyWPFApp.csproj]
/usr/local/share/dotnet/sdk/3.0.100-preview-009812/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.WinFX.targets(243,9): error BG1003: The project file contains a property value that is not valid. [/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFApp/MyWPFApp.csproj]

Build FAILED.

Expected behavior:
Expected dotnet build to succeed.

Minimal repro:

  1. On a Mac, I have installed lastest sdk from
    https://dotnet.microsoft.com/download/dotnet-core/3.0
  2. Executed dotnet -new wpf -o SampleWPFApp command
  3. Changed current folder in terminal to SampleWPFApp
  4. Executed dotnet build however it fails

@jabba2324

I don’t think WPF has been/will be ported to MacOS

Does the bug reproduce also in WPF for .NET Framework 4.8 on MacOS?:

@dotMorten

Does the bug reproduce also in WPF for .NET Framework 4.8 on MacOS?:

LOL

I don’t think WPF has been/will be ported to MacOS

Correct. WPF is Windows only.

@atverma

Thanks for the confirmation that WPF projects won’t be supported on macOS.

@karelz

@nguerrera

I don’t think we should block anything on dotnet new. You could just as easily clone or type in the same project. As such, the right place to verify is in the build. That said, without committing to anything, building wpf from non-Windows (cross compilation) is separate from running an application. The former can be made to work without the latter. Again, I am not committing to anything here, but it might be possible to make dotnet build work and leave the failure to dotnet run, which would tell you that there is no WindowsDesktop runtime.

karelz, atverma, Lakritzator, kvalev, hsorbo, tdjastrzebski, istupakov, listm, Sejsel, wgnf, and 3 more reacted with thumbs up emoji

@nguerrera

Guessing from the error message, it looks like the first thing hit here is a ‘/’ vs » mixup.

@karelz

OK, that makes sense. Let’s see if more people hit this problem then and if it is something we should address sooner rather than later to provide more clarity …

@nguerrera

Quick inspection, there are some hard-coded » in the build task source. There is also a mismatch of Microsoft.WinFX.targets in import vs Microsoft.WinFx.targets, which will cause this to fail even earlier on Linux. These are easy enough to fix, the question is whether something bigger lurks behind them.

@kvalev

@nguerrera I just encountered both issues that you mentioned, but I couldn’t find the Microsoft.NET.Sdk.WindowsDesktop.targets sources anywhere. Am I right to assume that they have not been open sourced yet?

@nguerrera

@yegorski

OK, that makes sense. Let’s see if more people hit this problem then and if it is something we should address sooner rather than later to provide more clarity …

FWIW I just hit this issue as well. Running

.NET Core SDK (reflecting any global.json):
 Version:   3.0.100-preview-010184
 Commit:    c57bde4593

I’ve also understood it that WPF is not and will not be supported on mac OS but after being encouraged by this post I gave it a try, which lead led to the issue at runtime.

@daviddenis-stx

In fact it seems possible to build WPF/WinForms projects from non Windows (Tested with bionic/amd64, we don’t use mac) with a quite simple patch (here on .NET Core 3.0 Preview5). There was two problems to address

  1. Microsoft.WinFx.targets casing required to be harmonized (for case sensitive file systems)
  2. PresentationBuildTasks assembly source code used hard coded const string » as directory separator in several locations

As a result, we seem to be able to build WPF/WinForms assemblies from Linux (cross compilation). I see the two markup compilation phases happening for WPF and diffing assemblies between plain Windows non patched build and Linux patched build gives the exact same outputs. Cross compiling is quite useful as we now can CI/CD using a lightweight Ubuntu-x64 docker image (instead of a quite big Windows VM). It should also probably work from other Unix flavours (Mac, etc …).

If someone is interested I will create a PR

Patch (Could do PR)
daviddenis-stx@a9b28ed

Docker images (Testing, not for PR)
daviddenis-stx@d122d93

@weltkante

@daviddenis-stx did you test this with custom Controls and MarkupExtensions? I don’t know the technical details of the markup compilation phase but I’d expect it to require loading the assembly and possibly even running some code? If so, then cross compiling could become pretty fragile as soon as 3rd party controls using Windows features are involved. When going this route it should be made sure that the error messages are appropriate when loading or execution of assemblies fails during markup compilation.

@daviddenis-stx

I tried to compile code using controls from Xceed extended WPF toolkit (restored as net 461). The build goes through and diffing the assemblies give something identical (the baml resources are not binary identical but decompiling them with ILSpy gives binary identical xaml text). Ideally we would need a great deal of unit testing. I’m curious of anybody willing to try to compile something of their own making to see how all that goes

At least this patch would correct self evident mistakes that prevent the build to even occur. I agree that it requires a lot of testing. We will do that on all our UIs and get back with more materials (proper runtime testing on Windows) but it’s probably not covering all the possibles. I guess it mostly boils down to underlying dependencies (are they net standard? do they use pinvoke? properly made nugets ?) if assembly loading happens it’s not clear why it would work on netcore windows and not linux?

Let’ s compile more WPF code with the proposed docker images, then diff assemblies, then execute. We should know rapidly if something bites.

@weltkante

if assembly loading happens it’s not clear why it would work on netcore windows and not linux?

C++/CLI doesn’t load on Linux/Mac, so if you’re using any type from such an assembly (possibly indirectly) it could trigger a failed assembly load, possibly cascading back to types failing to load in other assemblies.

I don’t expect it to be the common case, I just want to make sure this edge case is considered and has a reasonable diagnostic.

@daviddenis-stx

Makes sense. We had to just exclude C++/CLI assemblies from our codebase when migrating to netcore (I talk non UI assemblies). We may want to find a thirdparty with such a construction to test but it’s probable that those are going to dissappear eventually.

@daviddenis-stx

For the record, we stumbled upon some WinForms only issues when building with dotnet build (even on Windows). The build goes through but exceptions are thrown when executing.

As of .NET Core 3.0 preview5, you still have to build WinForms assemblies with msbuild.exe because .resx files are not handled correctly if you build with dotnet build.

For example the code below will execute without problem if built using VS2019 and fail with exception if built using dotnet build

(System.Windows.Forms.ImageListStreamer)resources.GetObject("imageList.ImageStream");

dotnet/msbuild#2221

@weltkante

WinForms will have more problems, for example licensed controls (licx) need to execute at build time to generate the license. Also natively wrapped controls are far more common in WinForms than in WPF. If they are licensed those will definitely not work on non-Windows builds. WinForms already has issues dotnet/winforms#947 and dotnet/winforms#971 for enabling Linux builds though, and I added corresponding remarks there.

@SergeyMatsiupa

If someone is interested I will create a PR

Patch (Could do PR)
systemathics@a9b28ed

Hi!
I tried to use your PR(fork) on my Ubuntu 18.04(x64) + net core 5.0.0-preview.1.20120.5, so I updated configuration file global.json to such state:
{
«tools»: {
«dotnet»: «5.0.100-alpha1-015536»,
«vs»: {
«version»: «16.1»
}
},
«sdk»: {
«version»: «5.0.100-alpha1-015536»
},
«msbuild-sdks»: {
«Microsoft.DotNet.Arcade.Sdk»: «5.0.0-beta.20171.1»,
«Microsoft.DotNet.Helix.Sdk»: «5.0.0-beta.20171.1»,
«FIX-85B6-MERGE-9C38-CONFLICT»: «1.0.0»,
«Microsoft.NET.Sdk.IL»: «5.0.0-alpha1.19513.3»
},
«native-tools»: {
«strawberry-perl»: «5.28.1.1-1»
}
}

Now after executing build.sh I got the error message (I report it here because don’t now whether is possibility to report about issue in fork):
maestro@mmeniac:~/..msv_links/C#/libs_and_so_on/Enable_WinForms_WPF_Unix/wpf$ sudo ./build.sh
/home/maestro/Documents/code/C#/libs_and_so_on/Enable_WinForms_WPF_Unix/wpf/eng/common/init-tools-native.sh: line 120: /home/maestro/Documents/code/C#/libs_and_so_on/Enable_WinForms_WPF_Unix/wpf/eng/common/native/install-strawberry-perl.sh: No such file or directory
Execution Failed

Is there a workaround to somehow build this fork?

@msftbot
msftbot
bot

locked as resolved and limited conversation to collaborators

Apr 18, 2022

@atverma

  • .NET Core Version: SDK 3.0.100-preview-009812
  • OS version: macOS Mojave v 10.14.1
  • Does the bug reproduce also in WPF for .NET Framework 4.8?: No

Problem description: After creating WPF project by running dotnet -new wpf command, dotnet build command fails with file not found errors.

Actual behavior:
A sample error is displayed below. The file exists however it seems that path separator is not correct which may be causing this build failure e.g. for root path and App.xaml.

/usr/local/share/dotnet/sdk/3.0.100-preview-009812/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.WinFX.targets(243,9): error BG1002: File ‘/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFAppApp.xaml’ cannot be found. [/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFApp/MyWPFApp.csproj]
/usr/local/share/dotnet/sdk/3.0.100-preview-009812/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.WinFX.targets(243,9): error BG1002: File ‘MainWindow.xaml’ cannot be found. [/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFApp/MyWPFApp.csproj]
/usr/local/share/dotnet/sdk/3.0.100-preview-009812/Sdks/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.WinFX.targets(243,9): error BG1003: The project file contains a property value that is not valid. [/Users/atverma/Documents/GitHub/DotNetCoreWPFApp/MyWPFApp/MyWPFApp.csproj]

Build FAILED.

Expected behavior:
Expected dotnet build to succeed.

Minimal repro:

  1. On a Mac, I have installed lastest sdk from
    https://dotnet.microsoft.com/download/dotnet-core/3.0
  2. Executed dotnet -new wpf -o SampleWPFApp command
  3. Changed current folder in terminal to SampleWPFApp
  4. Executed dotnet build however it fails

@jabba2324

I don’t think WPF has been/will be ported to MacOS

Does the bug reproduce also in WPF for .NET Framework 4.8 on MacOS?:

@dotMorten

Does the bug reproduce also in WPF for .NET Framework 4.8 on MacOS?:

LOL

I don’t think WPF has been/will be ported to MacOS

Correct. WPF is Windows only.

@atverma

Thanks for the confirmation that WPF projects won’t be supported on macOS.

@karelz

@nguerrera

I don’t think we should block anything on dotnet new. You could just as easily clone or type in the same project. As such, the right place to verify is in the build. That said, without committing to anything, building wpf from non-Windows (cross compilation) is separate from running an application. The former can be made to work without the latter. Again, I am not committing to anything here, but it might be possible to make dotnet build work and leave the failure to dotnet run, which would tell you that there is no WindowsDesktop runtime.

karelz, atverma, Lakritzator, kvalev, hsorbo, tdjastrzebski, istupakov, listm, Sejsel, wgnf, and 3 more reacted with thumbs up emoji

@nguerrera

Guessing from the error message, it looks like the first thing hit here is a ‘/’ vs » mixup.

@karelz

OK, that makes sense. Let’s see if more people hit this problem then and if it is something we should address sooner rather than later to provide more clarity …

@nguerrera

Quick inspection, there are some hard-coded » in the build task source. There is also a mismatch of Microsoft.WinFX.targets in import vs Microsoft.WinFx.targets, which will cause this to fail even earlier on Linux. These are easy enough to fix, the question is whether something bigger lurks behind them.

@kvalev

@nguerrera I just encountered both issues that you mentioned, but I couldn’t find the Microsoft.NET.Sdk.WindowsDesktop.targets sources anywhere. Am I right to assume that they have not been open sourced yet?

@nguerrera

@yegorski

OK, that makes sense. Let’s see if more people hit this problem then and if it is something we should address sooner rather than later to provide more clarity …

FWIW I just hit this issue as well. Running

.NET Core SDK (reflecting any global.json):
 Version:   3.0.100-preview-010184
 Commit:    c57bde4593

I’ve also understood it that WPF is not and will not be supported on mac OS but after being encouraged by this post I gave it a try, which lead led to the issue at runtime.

@daviddenis-stx

In fact it seems possible to build WPF/WinForms projects from non Windows (Tested with bionic/amd64, we don’t use mac) with a quite simple patch (here on .NET Core 3.0 Preview5). There was two problems to address

  1. Microsoft.WinFx.targets casing required to be harmonized (for case sensitive file systems)
  2. PresentationBuildTasks assembly source code used hard coded const string » as directory separator in several locations

As a result, we seem to be able to build WPF/WinForms assemblies from Linux (cross compilation). I see the two markup compilation phases happening for WPF and diffing assemblies between plain Windows non patched build and Linux patched build gives the exact same outputs. Cross compiling is quite useful as we now can CI/CD using a lightweight Ubuntu-x64 docker image (instead of a quite big Windows VM). It should also probably work from other Unix flavours (Mac, etc …).

If someone is interested I will create a PR

Patch (Could do PR)
daviddenis-stx@a9b28ed

Docker images (Testing, not for PR)
daviddenis-stx@d122d93

@weltkante

@daviddenis-stx did you test this with custom Controls and MarkupExtensions? I don’t know the technical details of the markup compilation phase but I’d expect it to require loading the assembly and possibly even running some code? If so, then cross compiling could become pretty fragile as soon as 3rd party controls using Windows features are involved. When going this route it should be made sure that the error messages are appropriate when loading or execution of assemblies fails during markup compilation.

@daviddenis-stx

I tried to compile code using controls from Xceed extended WPF toolkit (restored as net 461). The build goes through and diffing the assemblies give something identical (the baml resources are not binary identical but decompiling them with ILSpy gives binary identical xaml text). Ideally we would need a great deal of unit testing. I’m curious of anybody willing to try to compile something of their own making to see how all that goes

At least this patch would correct self evident mistakes that prevent the build to even occur. I agree that it requires a lot of testing. We will do that on all our UIs and get back with more materials (proper runtime testing on Windows) but it’s probably not covering all the possibles. I guess it mostly boils down to underlying dependencies (are they net standard? do they use pinvoke? properly made nugets ?) if assembly loading happens it’s not clear why it would work on netcore windows and not linux?

Let’ s compile more WPF code with the proposed docker images, then diff assemblies, then execute. We should know rapidly if something bites.

@weltkante

if assembly loading happens it’s not clear why it would work on netcore windows and not linux?

C++/CLI doesn’t load on Linux/Mac, so if you’re using any type from such an assembly (possibly indirectly) it could trigger a failed assembly load, possibly cascading back to types failing to load in other assemblies.

I don’t expect it to be the common case, I just want to make sure this edge case is considered and has a reasonable diagnostic.

@daviddenis-stx

Makes sense. We had to just exclude C++/CLI assemblies from our codebase when migrating to netcore (I talk non UI assemblies). We may want to find a thirdparty with such a construction to test but it’s probable that those are going to dissappear eventually.

@daviddenis-stx

For the record, we stumbled upon some WinForms only issues when building with dotnet build (even on Windows). The build goes through but exceptions are thrown when executing.

As of .NET Core 3.0 preview5, you still have to build WinForms assemblies with msbuild.exe because .resx files are not handled correctly if you build with dotnet build.

For example the code below will execute without problem if built using VS2019 and fail with exception if built using dotnet build

(System.Windows.Forms.ImageListStreamer)resources.GetObject("imageList.ImageStream");

dotnet/msbuild#2221

@weltkante

WinForms will have more problems, for example licensed controls (licx) need to execute at build time to generate the license. Also natively wrapped controls are far more common in WinForms than in WPF. If they are licensed those will definitely not work on non-Windows builds. WinForms already has issues dotnet/winforms#947 and dotnet/winforms#971 for enabling Linux builds though, and I added corresponding remarks there.

@SergeyMatsiupa

If someone is interested I will create a PR

Patch (Could do PR)
systemathics@a9b28ed

Hi!
I tried to use your PR(fork) on my Ubuntu 18.04(x64) + net core 5.0.0-preview.1.20120.5, so I updated configuration file global.json to such state:
{
«tools»: {
«dotnet»: «5.0.100-alpha1-015536»,
«vs»: {
«version»: «16.1»
}
},
«sdk»: {
«version»: «5.0.100-alpha1-015536»
},
«msbuild-sdks»: {
«Microsoft.DotNet.Arcade.Sdk»: «5.0.0-beta.20171.1»,
«Microsoft.DotNet.Helix.Sdk»: «5.0.0-beta.20171.1»,
«FIX-85B6-MERGE-9C38-CONFLICT»: «1.0.0»,
«Microsoft.NET.Sdk.IL»: «5.0.0-alpha1.19513.3»
},
«native-tools»: {
«strawberry-perl»: «5.28.1.1-1»
}
}

Now after executing build.sh I got the error message (I report it here because don’t now whether is possibility to report about issue in fork):
maestro@mmeniac:~/..msv_links/C#/libs_and_so_on/Enable_WinForms_WPF_Unix/wpf$ sudo ./build.sh
/home/maestro/Documents/code/C#/libs_and_so_on/Enable_WinForms_WPF_Unix/wpf/eng/common/init-tools-native.sh: line 120: /home/maestro/Documents/code/C#/libs_and_so_on/Enable_WinForms_WPF_Unix/wpf/eng/common/native/install-strawberry-perl.sh: No such file or directory
Execution Failed

Is there a workaround to somehow build this fork?

@msftbot
msftbot
bot

locked as resolved and limited conversation to collaborators

Apr 18, 2022

I installed the Feb 2010 WPF Toolkit as I’m interested in evaluating the AutoCompleteBox control and I’m having extremely limited success. I can get the control to work, but as soon as I try and set any of it’s properties in XAML, I get the following:

Unknown build error, ‘Cannot resolve dependency to assembly ‘WPFToolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.

I’ve been testing this on a blank WPF window in a new solution. I’m guessing I’m just missing a reference or something… Here’s the XAML (I’ve added nothing to the .xaml.cs):

<Window x:Class="WpfToolkitApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <toolkit:AutoCompleteBox Height="25"/>
    </Grid>
</Window>

The only reference I’ve added is System.Windows.Controls.Input.Toolkit. Any ideas?

I installed the Feb 2010 WPF Toolkit as I’m interested in evaluating the AutoCompleteBox control and I’m having extremely limited success. I can get the control to work, but as soon as I try and set any of it’s properties in XAML, I get the following:

Unknown build error, ‘Cannot resolve dependency to assembly ‘WPFToolkit, Version=3.5.40128.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.

I’ve been testing this on a blank WPF window in a new solution. I’m guessing I’m just missing a reference or something… Here’s the XAML (I’ve added nothing to the .xaml.cs):

<Window x:Class="WpfToolkitApplication.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <toolkit:AutoCompleteBox Height="25"/>
    </Grid>
</Window>

The only reference I’ve added is System.Windows.Controls.Input.Toolkit. Any ideas?

  • Remove From My Forums

none

Проблема со ссылкой на ресурсы сборки в коде (WPF — VB)

  • Вопрос

  • Есть ряд картинок определенных как ресурсы сборки. При установке свойств source с относительным URI в XAML все работает прекрасно, а вот из кода возникает ошибка «Не найдена часть пути…»

    Пример: в XAML — <Window
    x:Class=«MainWindow«
    Icon=«/Pict/11.png«>

    все работает шикарно, а вот в коде —

    Dim NotifyInfo As New System.Windows.Forms.NotifyIcon
    NotifyInfo.Icon = New System.Drawing.Icon(New BitmapImage(New Uri("/Pict/11.png", UriKind.Relative)).StreamSource)
    

    генерит ошибку: Не удалось найти часть пути…. «C:Pict11.png»

    Откровенно говоря не знаю что делать и как поступить…

Ответы

  • Действительно, не работает. У меня Background получилось вставить из кода вот так:

    Background = new ImageBrush(new BitmapImage(new Uri("pack://application:,,,/Bg.png", UriKind.Absolute)));
    
    • Помечено в качестве ответа

      31 марта 2011 г. 16:24

После установки следующих пакетов NuGet:

  • cef.redist.x64
  • CefSharp.Common
  • CefSharp.Wpf

Следуя следующему видеоруководству: Как создать веб-браузер Cefsharp в WPF C#, добавив файл манифеста приложения и раскомментировав ключ Windows 10.

Затем, ссылаясь на компонент CefSharp в заголовке окна Xaml: xmlns:cef="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf".

Следуя этим шагам, тег <cef:ChromiumWebBrowser Address="https://google.ca" Height="400" Width="400"/> должен создать элемент браузера. Вместо этого появляется следующая ошибка, сигнализирующая о том, что строка Xaml:

Неизвестная ошибка сборки, «Не удалось найти сборку CefSharp, Version=107.1.90.0 …’ Либо загрузите эту сборку явно, используя такой метод, как LoadFromAssemblyPath(), или использовать MetadataAssemblyResolver, который возвращает допустимую сборку.

Visual Studio предлагает добавить ссылку на библиотеку CefSharp, но щелчок по этому предложению всегда терпит неудачу по любой причине.

обращаясь к документации, можно найти минимальный работающий пример. Тем не менее, пример быстрого запуска даже не работал у меня (ошибки сборки и тому подобное).

Прочитав ответы на StackOverflow, может показаться, что требуется правильная установка распространяемого Visual C++, и что отсутствие этой установки может вызвать проблемы со ссылками. Это не решило проблему для меня.

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

2 ответа

Проблема связана с обращением к правильным dll. По какой-то причине они не получают ссылку на проект при выполнении установки пакета NuGet.

Пакеты NuGet устанавливаются в общую локальную папку в C:Usersusername.nuget. Поэтому добавление ссылок на пакеты NuGet вручную у меня сработало.

Добавить > Ссылка на проект… > Обзор… и добавить следующие библиотеки DLL:

  • ….nugetpackagescefsharp.wpf107.1.90libnet462CefSharp.Wpf.dll
  • ….nugetpackagescefsharp.common107.1.90libnet452CefSharp.Core.dll
  • ….nugetpackagescefsharp.common107.1.90libnet452CefSharp.dll

(Папки могут быть пронумерованы по-разному, но это ссылки на CefSharp.Wpf.dll, CefSharp.Core.dll, CefSharp.dll. .)


-1

Denis G. Labrecque
22 Ноя 2022 в 21:08

Согласно вашим тегам, вы используете .Net 6.0, для которого вам нужно использовать пакет CefSharp.Wpf.netcore. Пакет CefSharp.Wpf предназначен для .Net 4.x.

Для .Net 6.0 вам необходимо следовать инструкциям на странице https://github.com/cefsharp/CefSharp/wiki/Quick-Start-For-MS-.Net-5.0-or-больше

Вручную ссылаться на библиотеки DLL не рекомендуется и не требуется.


0

amaitland
22 Ноя 2022 в 22:18

При сборке решения своего проекта wpf довольно часто получаю ошибку:

не удалось скопировать файл «obj\Debug\{ProjectName}.exe» — файл не найден.

Я не первый, кто столкнулся с подобной проблемой. Пробовал много различных советов, таких, как смена версии целевой платформы, обновление .net framework, переустановка visual studio и т.д.
Единственной, что мне помогает, это перезапук visual studio (не каждый раз срабатывает).
А самое удивительное для меня, что всегда помогает изменение AssemblyVersion в файле AssemblyInfo.cs, я просто изменяю цифру в версии с 1.0.0.0 (дефолт) на 2.0.0.0 и решение собирается без ошибок, но через некоторое время ошибка появляется снова и тогда приходится изменять версию снова.

// [assembly: AssemblyVersion(«1.0.*»)]
[assembly: AssemblyVersion(«1.0.0.0»)]
[assembly: AssemblyFileVersion(«1.0.0.0»)]

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

PS: решение небольшое, состоит из одного одностраничного проекта WPF и библиотеки .dll, написанной мной, но вне данного решения, библиотека работает без проблем.
Из сторонних библиотек использую Microsoft.Toolkit.Wpf.UI.Controls для взаимодействия с картой

66 ответов

У меня была такая же проблема. Visual Studio не создает проект, на который ссылаются.

  • Щелкните правой кнопкой мыши на решении и выберите «Свойства».
  • Нажмите «Конфигурация» слева.
  • Убедитесь, что флажок в поле «Создать» для проекта, который он не может найти, проверяется. Если он уже установлен, снимите флажок, нажмите и снова установите флажки.

Matt_Bro

Поделиться

Это все еще может произойти в более новых версиях Visual Studio (у меня только что это произошло в Visual Studio 2013):

Еще одна попытка — закрыть Visual Studio и удалить файл .suo который находится рядом с файлом .sln. (Он будет сгенерирован заново при следующем Save all (или выходе из Visual Studio)).

У меня была эта проблема при добавлении новых проектов в решение на другом компьютере и последующем получении ревизий, но файл .suo может быть поврежден и в других случаях и привести к очень странному поведению Visual Studio, поэтому удаление его из вещей, которые я всегда стараюсь.

Обратите внимание, что при удалении файла .suo будут сброшены стартовые проекты решения.

Подробнее о файле .suo здесь.

corvuscorax

Поделиться

Предлагаемый ответ не работает для меня. Ошибка является приманкой для другой проблемы.

Я обнаружил, что нацелился на несколько иную версию .NET, и компилятор пометил ее как предупреждение, но это приводило к сбою сборки. Это должно быть помечено как ошибка, а не как предупреждение.

jordan koskei

Поделиться

Что ж, мой ответ — это не просто краткое изложение всех решений, но оно предлагает нечто большее.

Секция 1):

В общем решения:

У меня было четыре ошибки такого типа («файл метаданных не найден»), а также одна ошибка: «Не удалось открыть исходный файл (» ошибка не определена «)».

Я пытался избавиться от файла метаданных не удалось найти ошибку. Для этого я прочитал много постов, блогов и т.д. И обнаружил, что эти решения могут быть эффективными (обобщая их здесь):

  1. Перезапустите Visual Studio и повторите сборку.

  2. Перейдите в «Обозреватель решений». Щелкните правой кнопкой мыши на Решение. Перейти к свойствам. Перейдите в «Диспетчер конфигурации». Проверьте, установлены ли флажки под «Build» или нет. Если какие-либо или все из них не отмечены, то проверьте их и попробуйте построить заново.

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

  4. Порядок сборки и зависимости проекта:

    Перейдите в «Обозреватель решений». Щелкните правой кнопкой мыши на Решение. Перейти к «Зависимости проекта…». Вы увидите две вкладки: «Зависимости» и «Порядок сборки». Этот порядок сборки является тем, в котором строится решение. Проверьте зависимости проекта и порядок сборки, чтобы убедиться, что какой-либо проект (скажем, «проект1»), который зависит от другого (скажем, «проект2»), пытается построить этот проект (проект2). Это может быть причиной ошибки.

  5. Проверьте путь к отсутствующему .dll:

    Проверьте путь к отсутствующему .dll. Если путь содержит пробел или любой другой недопустимый символ пути, удалите его и попробуйте построить заново.

    Если это причина, то отрегулируйте порядок сборки.


Раздел (2):

Мой частный случай:

Я попробовал все шаги выше с различными перестановками и комбинациями с перезапуском Visual Studio несколько раз. Но это не помогло мне.

Итак, я решил избавиться от другой ошибки, с которой мне пришлось столкнуться («Невозможно открыть исходный файл (» ошибка не определена «)»).

Я наткнулся на сообщение в блоге: Ошибка TFS — Невозможно открыть исходный файл («Неопределенная ошибка»)

Я попытался выполнить шаги, упомянутые в этом сообщении в блоге, и я избавился от ошибки «Исходный файл не может быть открыт (» неопределенная ошибка «)», и неожиданно я избавился и от других ошибок («файл метаданных не найден)»,


Раздел (3):

Мораль истории:

Попробуйте все решения, как указано в разделе (1) выше (и любые другие решения), чтобы избавиться от ошибки. Если ничего не получится, как в блоге, упомянутом в разделе (2) выше, удалите записи всех исходных файлов, которых больше нет в исходном элементе управления и файловой системе, из вашего файла .csproj.

Vikram

Поделиться

В моем случае это было вызвано несоответствием версии .NET Framework.

Один проект был 3.5, а другой ссылающийся на проект 4.6.1.

Eric Schneider

Поделиться

Закрытие и повторное открытие Visual Studio 2013 сработало для меня!

Roffers

Поделиться

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

Мне казалось очевидным, что эта неправильная ссылка на файл метаданных должна где-то храниться.

Быстрый поиск файла .csproj выявил виновные строки. У меня был раздел под названием <itemGroup>, который, казалось, висел на старом неправильном пути к файлу.

<ItemGroup>
    <ProjectReference Include="..\..\..\MySiteOld\MySite.Entities\MySite.Entities.csproj">
        <Project>{5b0a347e-cd9a-4746-a3b6-99d6d010a6c2}</Project>
        <Name>Beeyp.Entities</Name>
    </ProjectReference>
...

Итак, простое исправление действительно:

  1. Сделайте резервную копию вашего .csproj файла.
  2. Найдите неправильные пути в файле .csproj и переименуйте соответствующим образом.

Пожалуйста, убедитесь, что вы сделали резервную копию своего старого .csproj перед тем, как начать играть.

Alex Stephens

Поделиться

Я получил ту же ошибку «Файл метаданных ‘.dll’ не может быть найден», и я попробовал несколько вещей, описанных выше, но причина ошибки заключалась в том, что я ссылался на сторонний файл DLL, который был нацелен на версию .NET что мой проект целевой .NET версия. Таким образом, решение состояло в том, чтобы изменить целевую структуру моего проекта.

Mladen Nikolov

Поделиться

Я также встретил эту проблему. Во-первых, вам нужно вручную создать проект DLL, щелкнув правой кнопкой мыши Build. Тогда это сработает.

user1678541

Поделиться

Я добавил новый проект в свое решение и начал его получать.

Причина? Проект, который я привел, был нацелен на другую среду .NET(4.6, а два других были 4.5.2).

Todd Vance

Поделиться

В моем случае у меня есть установленная директория ошибочно.

Если ваш путь решения — это что-то вроде «Мое Project% 2c Very Popular% 2c Unit Testing% 2c Software и Hardware.zip», он не может разрешить файл метаданных, возможно, нам следует предотвратить некоторые недопустимые слова, такие как% 2c.

Переименование пути в обычное имя разрешило мою проблему.

masphei

Поделиться

Для меня это произошло, когда я включил новый проект в решение.

Visual Studio автоматически выбирает .NET Framework 4.5.

Я перешел на версию .NET 4.5.2, как и другие библиотеки, и это сработало.

Andre Mesquita

Поделиться

Я тоже решил эту проблему, но, попробовав предыдущие ответы, единственное, что мне помогло, — это открыть каждый проект в моем решении 1 на 1 и построить их по отдельности.

Затем я закрыл Visual Studio 2013, снова открыл свое решение, и оно скомпилировалось нормально.

Это странно, потому что, если я щелкнул каждый проект в моем обозревателе решений и попытался построить их таким образом, все они потерпели неудачу. Мне пришлось открыть их одному в их собственных решениях.

prospector

Поделиться

Для меня сработали следующие шаги:

  • Найти проект, который не строит
  • Удалить/добавить ссылки на проекты в рамках решения.

Baglay Vyacheslav

Поделиться

Для меня он пытался найти DLL в пути, который использовался для содержания Project, но мы перенесли его в новый каталог. Решение имело правильный путь к проекту, но Visual Studio каким-то образом продолжала искать в старом расположении.

Решение. Переименуйте каждую проблему. Проект — просто добавьте символ или что-то еще — затем переименуйте его обратно в исходное имя.

Это должно быть reset некоторый глобальный кеш какого-то типа в Visual Studio, потому что это очищает и эту проблему, и несколько подобных ей, в то время как такие вещи, как Clean, не работают.

Chris Moschini

Поделиться

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

Eric

Поделиться

В моем случае проблема была вызвана простой ошибкой сборки,

ошибка CS0067: событие ‘XYZ’ никогда не используется

который по какой-либо причине не появился в окне ошибок.

Из-за этого система сборки Visual Studio, похоже, пропустила ошибку и попыталась построить зависимые проекты, которые, в свою очередь, потерпели неудачу с раздражающим сообщением метаданных.

Рекомендация -as глупа, как может sound-:

Сначала посмотрите на ваше окно вывода!

Мне потребовалось полчаса, прежде чем эта идея поразила меня…

Heinz Kessler

Поделиться

Я получил эту проблему в Visual Studio 2012 в решении, в котором было много проектов. Перестройка каждого проекта в решении вручную в том же порядке, в котором он был исправлен в порядке сборки проекта (щелчок правой кнопкой мыши и перестроение в обозревателе решений).

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

dan-gph

Поделиться

Я столкнулся с той же проблемой. В моем случае я ссылался на проект библиотеки классов с более высокой версией .Net, чем у моего проекта, и VS не смог собрать проект и вывел ту же ошибку, что и вы.

Я просто установил .Net-версию своего проекта библиотеки классов (тот, который сломал сборку), идентичный .Net-версии ссылочного проекта, и проблема решена.

Code_Worm

Поделиться

Похоже, такие ошибки связаны с тем, что Visual Studio не предоставляет правильную информацию об ошибке. Разработчик даже не понимает причину неудачной сборки. Это может быть синтаксическая ошибка или что-то еще. В общем, для решения таких проблем вы должны найти корень проблемы (например, посмотрите журнал сборки).

В моем случае проблема была в том, что в окне Error List не было ошибок. Но на самом деле были синтаксические ошибки; Я нашел эти ошибки в окне » Output, и после их устранения проблема была решена.

burzhuy

Поделиться

У меня тоже была такая же ошибка. Он прячется как на пути ниже. Путь, на который я ссылался для файла DLL, выглядит как «D:\Assemblies Folder\Assembly1.dll».

Но исходный путь, на который ссылалась сборка, был «D:\Assemblies %20Folder\Assembly1.dll».

Из-за этого изменения имени пути сборка не может быть извлечена из исходного пути и, следовательно, выдает ошибку «Метаданные не найдены».

Решение в вопросе. Как заменить все пробелы на %20 в С#? ,

Arun Prasad

Поделиться

В моем случае проблема заключалась в том, что я вручную удалил файл без компиляции, который был помечен как «отсутствует». Как только я удалил ссылку на текущий файл и перекомпилировал — все было хорошо.

David Ford

Поделиться

Для моего случая это было то, что я закомментировал классы в определенном (пустом) пространстве имен:

namespace X.Y.Z.W
{

    // Class code

}

Когда я удалил код пространства имен и команды его импорта (использования) — это решило проблему.

В сборке также говорилось — вместе с отсутствующим файлом DLL проекта:

ошибка CS0234: имя типа или пространства имен ‘W’ не существует в пространстве имен ‘XYZ’ (отсутствует ссылка на сборку?)

Michail Michailidis

Поделиться

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

#if DEBUG
    public int SomeProperty { get; set; }
#endif

но использование свойства не было. Публикация была выполнена в конфигурации Release без символа DEBUG, очевидно.

Dmitri Trofimov

Поделиться

Просто указывая на откровенно очевидное: если у вас нет «Показать окно вывода при запуске сборки», убедитесь, что вы заметили, что ваша сборка не работает (небольшая ошибка «build failed» в левом нижнем углу)!!!

tbone

Поделиться

Если у вас есть место в имени вашего решения, это также вызовет проблему. Удаление пространства из имени вашего решения, поэтому путь не содержит %20.

Ajaco

Поделиться

Я использую Visual Studio 2013.

Похоже, что зависимости сборки были неправильными. Удаление файлов *.suo решило проблемы, которые у меня были.

DrBB

Поделиться

Эта ошибка может быть показана, если вы используете поддельные сборки. Удаление подделок приводит к успешной сборке проекта.

FLCL

Поделиться

У меня был класс в 4.6.1, обновляющий интерфейс, который был в 4.6.2… обновление класса до 462 исправило его.

Antonin GAVREL

Поделиться

Удаление папки с packages содержащей NuGet, в папке решения работало для меня. После восстановления все снова заработало. Проверьте References в решении и проверьте ссылки, которые имеют желтый треугольник.

Пример изображения:

Изображение 1033

Ogglas

Поделиться

В моем случае у меня была эта ошибка, потому что один из моих проектов использовал версию платформы .NET, отличную от других решений. Я использовал менеджер пакетов NuGet для установки NLog, поэтому, я думаю, он был установлен для .Net-версии этого проекта.

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

Когда я удалил все файлы в obj\Debug из этого проекта, решение было скомпилировано.

Pierre-Olivier Pignon

Поделиться

В моем случае эти ошибки были вызваны некоторыми повреждениями в менеджере пакетов NuGet. Подпроекты решения не создавались, но ошибок не было из-за ошибок метаданных.

После того, как все пакеты NuGet были исправлены, проект снова может быть собран правильно.

Nick

Поделиться

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

Я взял .dll, декомпилировал и сгенерировал проекты и решения. Я не смог построить решение из-за нескольких ошибок такого рода.

Советы в предыдущих ответах не помогли, но через некоторое время я заметил пропущенные ссылки в некоторых проектах на несколько сборок, таких как System.dll.

Предположим, что существует проект A, зависящий от проекта B. В проекте B не было ссылки на System.dll, но ошибка после сборки выглядела как «Файл метаданных» B.dll «не найден».

Не было ошибки об отсутствии System.dll в проекте B.

Добавление ссылки на библиотеки типа System.dll в проекте B решило проблему. (System.Data, System.DirectoryServices и т.д.)

drfaka

Поделиться

У меня была такая же проблема. В моем случае проект все равно будет построен в режиме выпуска, и именно тогда я попытался построить отладку, чтобы она не удалась.

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

Jack Fairfield

Поделиться

Я получил эту ошибку после открытия проекта, в котором была ссылка на Entity Framework, поэтому я удалил такие ссылки и переустановил Entity Framework версии 6.0.0.0 через pcket-менеджер следующим образом:

install-package entityframework -version 6.0.0.0

Ошибка все еще показывалась, поэтому я подумал, что эти ссылки были там, потому что в проекте была более ранняя версия Entity Framework, предположительно «предустановленная», но на самом деле она не работала.

Поэтому я подошел к файлу packages.config и заметил, что есть еще одна ссылка:

<packages>
  **<package id="EntityFramework" version="5.0.0" targetFramework="net45" />**
  <package id="EntityFramework" version="6.0.0" targetFramework="net45" />
</packages>

Затем я удалил строку, очистил и перестроил проект и контейнерное решение, и оно наконец заработало.

CoderRoller

Поделиться

На основании сообщения об ошибке я не верю, что путь к файлу усекается. Это выглядит просто неправильно. Если я правильно читаю сообщение, оно, похоже, ищет файл DLL в…

РАБОЧИЕ = -\Tools\VersionManagementSystem\BusinessLogicLayer\Bin\Debug\BusinessLogicLayer.dll

Это неверный путь. Возможно ли, что у вас есть определение макроса в процессе сборки, установленное на недопустимое значение?

JaredPar

Поделиться

В моем случае ReSharper был глуп, и, хотя мой проект нацелен на С# 6, мне предлагали рефакторинг для использования функций только С# 7.

По этой причине я закончил тем, что изменил этот код,

private DateTime? _joinedDate;
[Column(TypeName = "DateTime2")]
public DateTime JoinedDate
{
    get { return _joinedDate ?? DateTime.Now; }
    set { _joinedDate = value; }
}

в этот код:

private DateTime? _joinedDate;
[Column(TypeName = "DateTime2")]
public DateTime JoinedDate
{
    get => _joinedDate ?? DateTime.Now;
    set => _joinedDate = value;
}

По какой-то причине использование getter и setter с использованием тел выражений заставило компилятор выдавать ошибку метаданных вместо синтаксической ошибки.

Mathieu VIALES

Поделиться

aaaaaand шесть лет спустя во время обновления до Visual Studio 2015 такая же проблема. Поскольку это конкретное решение отсутствует в этом списке, я добавляю к нему.

Две ссылочные dll находились в папке c:\windows\system32….
Перемещение их в не системную папку и добавление ссылки на новую папку наконец-то исправили. Остальные вопросы были действительно тем, что уже говорили здесь уже

Serve Laurijssen

Поделиться

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

Jon D

Поделиться

Причиной проблемы может быть смешанное добавление ссылок на файлы DLL и проекты в решении.

Если у вас есть проекты A, B и C:

  • Ссылки B и C как проекты в решении.
  • B ссылается на C как файл DLL (ссылка на файл)

Вы можете построить каждый проект отдельно, но не можете перестроить решение, заканчивающееся на: файл метаданных ‘C.dll’ не найден.

Помогает изменение ссылки из файла на проект в решении.

Liero

Поделиться

У меня была эта проблема, потому что .nuget\NuGet.exe не был включен в мой репозиторий. Хотя я включил DownloadNuGetExe в NuGet.targets, он сообщал об ошибке прокси при попытке загрузить его. Это привело к сбою остальных сборок проекта.

wtjones

Поделиться

Моя проблема возникла, когда я написал код на С# 7, но проект использовал более старую версию для .net Framework

Abdullah Tahan

Поделиться

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

Joe Dyndale

Поделиться

Как указывает пользователь @burzhuy, может быть важно взглянуть на окно Output, а не только на окно Error List.

В моем случае я работал над внесением изменений в компилятор Roslyn. Его проекты сборки запускают дополнительную проверку, чтобы увидеть, согласуются ли открытые поля с тем, что было определено как открытый интерфейс компилятора, в противном случае он выдает ошибку RS0016 или RS0017. Я добавил пару открытых полей и исправил ошибку RS0016, наведя указатель мыши на ошибку и выбрав «Добавить в публичный API».

Позже я передумал и перевел общедоступные поля в другой класс. По какой-то причине это привело к ошибке «Файл метаданных не найден», и чем больше я возился с этим, тем больше ошибок я получал.

Вам нужно найти правильный файл PublicAPI.Unshipped.txt (в моем случае это был E:\Roslyn\32414\src\Compilers\Core\Portable) и отредактировать его вручную, чтобы удалить E:\Roslyn\32414\src\Compilers\Core\Portable строки.

RenniePet

Поделиться

Для меня проблема была в том, что у меня было открыто два окна Visual Studio, мой проект выполнялся в режиме отладки в одном окне, и я попытался построить его в другом.

Мне пришлось прекратить отладку, а затем он позволил мне построить успешно.

Mykhailo Seniutovych

Поделиться

Я столкнулся с этой проблемой. В моем случае несколько С# проектов упоминались как файлы DLL. Любая ошибка времени компиляции в проекте, который используется как файл DLL (в других проектах), может привести к потоку ошибок. Причина в том, что ошибка времени компиляции предотвращает создание соответствующего файла DLL, и это приводит к серии ошибок в проектах, которые ссылаются на отсутствующий файл DLL.

Поэтому, когда вы перестраиваете в Solution Explorer (игнорируя тривиальные ошибки времени компиляции), возникает куча ошибок «файл метаданных .dll не найден» (что заставляет вас думать, что вы сделали не так, как простое перестроение).

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

josepainumkal

Поделиться

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

Hassan Malik

Поделиться

Я столкнулся с этой ошибкой в Visual Studio 2015, когда удалил аннотацию типа из вызова метода расширения, из-за которого остались только пустые угловые скобки.

Поэтому вместо obj.extensionMethod<Type>() меня был obj.extensionMethod<>().

Я бы классифицировал это как ошибку в Visual Studio, так как не вижу, как эта ошибка может привести к этой ошибке.

mschwaig

Поделиться

Вау, похоже, что эта ошибка может прийти отовсюду.

В любом случае, я добавил новый контроллер WebAPI в свое приложение MVC, и он автоматически получил все ссылки от NuGet. Чуть позже я удалил ссылки из интерфейса NuGet, но я забыл удалить файлы, используя их (например, System.Http).

По какой-то причине я получил сообщение об ошибке, а также простое предупреждение о том, что переменная не используется.

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

Alexander D

Поделиться

Я выяснил, что если вы удалите сборку Microsoft.CSharp в качестве ссылки в проекте, вы получите эту ошибку.

Mirek

Поделиться

  • Щелкните правой кнопкой мыши на решении и нажмите «Очистить».
  • Щелкните правой кнопкой мыши на решении и нажмите «Восстановить».

abdullah almoshaighe

Поделиться

Когда я делал сборку, в Visual Studio 2017 обычно отображались такие ошибки:

Error   CS0006  Metadata file 'C:\src\ProjectDir\MyApp\bin\x64\Debug\Inspection.exe' could not be found MyApp   C:\src\ProjectDir\MyApp\CSC 1   Active

Но иногда такая ошибка будет отображаться в течение пары секунд, а затем она исчезнет и переключится обратно на указанное выше сообщение:

Error   CS1503  Argument 1: cannot convert from 'MyApp.Model.Entities.Asset' to 'MyApp.Model.Model.Entities.Inspection' MyApp   C:\src\ProjectDir\MyApp\ViewModels\AssetDetailsViewModel.cs 1453    Active

Поэтому я потратил время на устранение первой ошибки, но настоящая проблема оказалась из-за второй ошибки. Сначала мне пришлось удалить все каталоги /bin и /obj, затем я также удалил файлы .suo, как указано выше. Это позволило мне сузить проблему до проблемы интерфейса.

В моем интерфейсе у меня было это:

    Task<IList<Defect>> LoadDefects(Asset asset);

Но в моей реальной реализации у меня был этот код:

    public virtual async Task<IList<Defect>> LoadDefects(Inspection inspection)
    {
       var results ...
       // ....

        return results;
    }

Сборка успешно завершена после того, как я обновил интерфейс до этого:

    Task<IList<Defect>> LoadDefects(Inspection inspection);

Таким образом, похоже, что кеширование в VS заставляло его отображать ошибку CS0006, когда настоящей проблемой была ошибка CS1503.

user8128167

Поделиться

В моем случае в моем файле Web.config это

<?xml version="1.0" encoding="utf-8"?>

к этому

<?xml version="1.0"?>

исправил мою проблему

Elnoor

Поделиться

У меня была такая же проблема и другое решение.

Вопрос: одно решение, несколько проектов. Основное приложение, которое использует некоторые другие результаты, не удалось, сказав:

CSC: ошибка CS0006: файл метаданных ‘C:\Repos\TheApplication\TheApplicationCommon\bin\Debug\TheApplication.dll’ не найден

Но на самом деле этот проект сгенерировал C:\Repos\TheApplication\TheApplicationCommon\bin\Debug\TheApplicationCommon.dll Другой проект, который также использует ту же самую DLL, скомпилированную без нареканий.

Прежде чем я обновил внутренний NuGet-пакет, который использовал PostSharp 3.xxx и теперь использует PostSharp 4.xxx, я решил добавить это в мой файл *.csproj:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="...">
  <Import Project="..." Condition="..." />
  <PropertyGroup>
    ...
    <AssemblyName>TheApplication</AssemblyName>
    ...
    <SkipPostSharp>True</SkipPostSharp> <!-- This line -->
  </PropertyGroup>
...

Другая Solution-> Clean, другая Solution-> Перестройка, и она работает локально и на сервере сборки.

Надеюсь, это поможет кому-то. Поток старый и довольно длинный, но эта проблема часто возвращается, и я пока не видел этого решения. Кстати, с использованием Visual Studio 2017 (15.8.x).

ecth

Поделиться

Visual Studio IDE не создает никаких закулисных структур, как это делает приложение Msbuild. VS IDE, по сути, просто создает файл проекта, который используется Msbuild, и довольно часто он делает ошибки, если вы оставляете его на усмотрение IDE, чтобы самому разобраться. Если вы получаете Metadata file '.dll' could not be found ошибку, скорее всего, из-за того, что правильные/ожидаемые сборки не найдены. Так что, возможно, Visual Studio может создавать файл проекта для приложения платформы 4.5 и ожидать 4,5 сборки, пока вы ссылаетесь на сборки 4.0. Поэтому посмотрите на свои настройки Visual Studio на предмет несовместимости или зайдите в файл проекта и вручную исправьте его, указав правильный путь <Reference Include="C:\\correct path to assembly\\yourAssembly.dll"/>.

annoying_squid

Поделиться

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

Я полагаю, что возникла ошибка при сборке, потому что DLL файл библиотеки Logic Layer не мог быть собран, и основное приложение не смогло его найти.

Решение состояло в том, чтобы вернуть второй служебный класс на другое пространство имен, и тогда, когда начали появляться реальные ошибки сборки. После их сортировки сборка прошла нормально.

В качестве обзора, если какое-либо из предыдущих решений не работает для вас, возможно, вы подавили ошибки в коде, который не отображается в Visual Studio, поэтому попробуйте еще раз отследить этапы кодирования и проверить наличие ошибок.

PS: это было в Visual Studio 2015 Community Edition

Remus.A

Поделиться

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

В конце концов, моя проблема была решена тем, что я исправил все остальные ошибки сборки, а затем снова собрал, и он был успешно собран.

Таким образом, в случае, если у вас есть другие ошибки сборки наряду с отсутствующей ошибкой DLL файла, и ничего больше не работает для вас, попробуйте сначала исправить другие ошибки, а затем снова построить решение.

Fakhar Ahmad Rasul

Поделиться

В моем случае установка целевой платформы решила проблему:

  1. Щелкните правой кнопкой мыши по проекту и выберите «Свойства».

  2. В приложении измените целевую платформу на ту же, что и у основного проекта (например, «.NET Framework 4.5»).

Hamid

Поделиться

Ни один из десятков ответов до сих пор не работал для меня. В моем случае я тоже получил ошибку:

Имя элемента кортежа ‘Value’ выводится. Пожалуйста, используйте языковую версию 7.1 или выше для доступа к элементу по его предполагаемому имени

Это появилось рядом с ошибками «Файл метаданных .dll» не удалось найти «при сборке, но вскоре исчезло, поскольку ошибки иногда возникают, когда среда IDE» догоняет «.

Двойной щелчок по ошибке, чтобы найти ее, и удаление кода, вызывающего проблемы, исправляет ее.

В противном случае вы можете попробовать это в Visual Studio:

Меню Проект → <Имя проекта> Свойства → Построить → кнопка Дополнительно → Языковая версия → С# <последняя дополнительная версия> (например, «С# 5.0»)

И это тоже исправляет.

Похоже, что «файл метаданных ‘.dll’ не найден» часто является признаком некоторых других основных проблем, поэтому, если ни одно из лучших решений не работает для вас, проверьте другие ошибки и предупреждения и попытайтесь найти реальную проблему.

MGOwen

Поделиться

Я видел эту ошибку, потому что у меня была следующая строка в моем коде (похоже, я все еще думал в режиме SQL):

if(myVar is null)
    DoSomething();

Visual studio (2017) не сообщала об ошибках при проектировании или компиляции, однако проект не собирался и выдавал ошибку «missing.dll». При изменении ошибочной строки на:

if(myVar == null)

Проблема решена.

Gavimoss

Поделиться

У меня появилась эта проблема после того, как я сильно изменил решение, отложил изменения и отменил их.

Единственный способ решить эту проблему — удалить и снова добавить отображение из TFS в мою локальную папку.

NoHero

Поделиться

Ни одно из предыдущих решений не сработало для меня, поэтому я поделюсь тем, что сделал.

У меня была эта проблема после слияния некоторых новых библиотек классов из другой ветки, которые ссылались друг на друга. Удаление ссылок в проектах и воссоздание их, наконец, решило проблему. Очевидно, Visual Studio слилась по неправильным путям к файлам.

Nick Van Brunt

Поделиться

Я столкнулся с этой проблемой после getting latest (команда Team Foundation Server (TFS)).

После разрешения конфликтов я обнаружил использование оператора для namespace that does not exist in the project.

Поэтому я удалил оператор using затем clean and rebuild, и все было в порядке.

Basheer AL-MOMANI

Поделиться

Очень странно! Я перепробовал все предыдущие ответы и, к сожалению, в моем случае ничего не получалось.

Я столкнулся с двумя ошибками:

  1. Отсутствует файл .dll
  2. Метод уже определен в другом месте с такими же параметрами

Сначала я очистил вторую ошибку, удалив функцию, дублированную в другом месте.

Моя первая ошибка — отсутствие файла .dll — решила сама.

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

A user

Поделиться

Проверьте файл .csproj основного проекта. Visual Studio не очищает это, если вы удаляете проекты или изменяете ссылки в решении.

На старые проекты три раза ссылались в файле .csproj, и компиляция показала эту ошибку этим удаленным проектам.

Tarmo Elfving

Поделиться

Ещё вопросы

  • 0Анимация относительных спрайтов в CSS
  • 0Как отобразить сообщение из контактной формы на главной странице
  • 0добавить фоновое изображение на холст, а затем обрезать область
  • 0Возвышенный текст 3 работает локальный файл на локальном сервере с помощью плагина SideBarEnhancements?
  • 0Преобразуйте MySql InputStream в byte []
  • 1Как сохранить запрос в переменных с помощью C #?
  • 1Кнопка маршрутизации не работает в Angular 2
  • 0Асинхронный обратный вызов не был вызван в течение тайм-аута — модульное тестирование службы Typescript & Angular $ http
  • 1Не авторизован (401) при использовании Jira API с использованием Postman?
  • 1Исключение с 64-битным модульным тестом в Visual Studio 2008 Professional
  • 0как получить значение атрибута свойства ‘width’
  • 1Передача аргументов в setTimeout: один метод не работает (JS)
  • 1Работает ли билинейная / бикубическая интерполяция на каждом цветовом канале независимо?
  • 0colorbox popup отлично работает на apache, не загружает изображение на nginx
  • 0динамическое создание таблиц и столбцов с использованием MySQL Python Connector
  • 0jqgrid deselectAfterSort для типа данных json
  • 1Android Studio 3.2 «Не найдено целевое устройство»
  • 0HTML с использованием ASP
  • 1Как удалить последнюю строку в сетке с помощью WPF?
  • 0JS не работает в FireFox, но работает в Chrome & IE
  • 0Когда письмо отправляется с живого письма с китайским содержимым, тело сообщения отображается с некоторыми специальными символами
  • 0Одинаковый интерфейс Ionic Framework для мобильных и не мобильных браузеров?
  • 0Показать окно сообщения о блокировке
  • 1Представление Flask создает DataFrame, но по-прежнему вызывает «UnboundLocalError: локальная переменная« df », на которую ссылаются до назначения»
  • 1Сглаживание неравномерного массива — ошибка исключения вне границ
  • 0Специальная функция в сообщении об ошибке
  • 1KnockoutJS — показать накопленную стоимость для каждого элемента
  • 0Вставка данных с использованием JSP (Eclipse) в базу данных (XAMPP, MySQL)
  • 0Вставьте директиву в DOM, используя jqlite
  • 0PDO вставляет последний идентификатор вставки в две таблицы
  • 1Разобрать строку составного запроса в Python
  • 0Вызов href из JavaScript
  • 1разделение значения и отображение в отформатированном виде
  • 0JQuery — пытается перейти к разделам с той же ссылкой
  • 1Request.ServerVariables.AllKeys не содержит все ключи
  • 1Ошибка в соединении JDBC с Hive с использованием eclipse и CHD4
  • 1Оператор переключателя в Javascript
  • 0MySQL — привязка сотрудников к счету №
  • 0Я не могу получить доступ к определенным ресурсам (параметры URL) Java
  • 0Как сохранить выбор флажка с тем же именем и идентификатором
  • 1Bluetooth получает данные от HC05 не работает. Я получаю эти данные мусора ����
  • 0Создание базового массива объектов JavaScript
  • 1Передача значений из фрагмента в действие с использованием дополнительных функций устанавливает только нулевые значения
  • 1Как получить доступ к зарезервированным словам Beautifulsoup в документе xml на python?
  • 0Как использовать миллисекунды в сиквелизировании стандартного поля созданного на месте?
  • 1Сохранение в DATABASE MVC шаблон
  • 1Получить данные из обратных вызовов
  • 0Как выбрать записи с интервалом в минутах текущего дня и времени?
  • 0Получить строки внутри двойных скобок [дубликаты]
  • 1Камера «Bitmap imageBitmap = (Bitmap) extras.get (» data «);» выдает ошибку Nullpointer

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Неизвестная ошибка outlook 0x80040201
  • Неизвестная ошибка рисования premiere pro
  • Неизвестная ошибка проверки чека читай город
  • Неизвестная ошибка 123
  • Неизвестная ошибка рисования adobe premiere

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: