Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6825149
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T21:59:16+00:00 2026-05-26T21:59:16+00:00

I was converting some .NET-3.5-based projects to .NET Framework 4.0 and ran into trouble

  • 0

I was converting some .NET-3.5-based projects to .NET Framework 4.0 and ran into trouble with assembly-embedded string resources.

The code contains references to resource strings like Resources.ValidationFailedMsg. Resources here is an automatically generated class. It’s fully-qualified name is MyAssembly.Properties.Resources (the assembly name is MyAssembly.dll and, to keep it simple, the root namespace of everything in it is also MyAssembly). The project’s “Properties” folder contains Resources.resx, where the string ValidationFailedMsg is defined (e.g. “Validation failed!”) and the Resources.Designer.cs file is generated from it.

Now let’s run this thing. Here’s what happens:

System.IO.FileNotFoundException : Could not load file or assembly ‘MyAssembly.resources….

Excuse me, what file???

First, I understand the concept of binary .resource files and how there may many such files for many cultures, but let’s get one, default culture to work first. From .NET 2.0 to 3.5- compatible versions of this project, all strings were embedded in the assembly itself, so the framework didn’t even look for them anywhere except MyAssembly.dll. How can I make it look at the assembly and not look at anything else?

Second, I noticed a .resource file in the project’s bin\Debug directory, but it’s named MyAssembly.Properties.Resources.resources, not MyAssembly.resources, and msbuild doesn’t copy it to bin\Debug or anywhere else where MyAssembly is referenced. Is this a useful hint to what may be going wrong here?

Third, I can open a new, empty project in Visual Studio 2010, add Resources.resx under properties, put a string there, reference it in the code as TestProject.Properties.Resources.String1, build, and it works like charm. But in the old project, even readding Resource.resx with its strings doesn’t help.

Can you explain why .NET 4.0 compiles these string into one place and then looks for them in a different place, causing the FileNotFoundException? And what is the proper way to migrate a .NET 3.5-compatible assembly with such embedded string resources to .NET 4.0?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T21:59:16+00:00Added an answer on May 26, 2026 at 9:59 pm

    Mystery solved.

    .NET (before 4.0) looks for the .resource file first. If the file is not found, it looks inside the assembly to find the requested resource.

    Starting with .NET 4.0, if the .resource file doesn’t exist, the framework fires an AppDomain.AssemblyResolve event and passes the resource file name in place of the assembly name. (Why AssemblyResolve? – this is probably a bug.) Only if this event is not handled, does .NET 4.0 look inside the assembly for the resource.

    As it happened, the application had an AssemblyResolve handler registered. The handler was programmed to locate DLLs and never failed for years until the day of the .NET 4.0 upgrade, when it was asked to locate a nonexistent resource file.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm converting some C# code into VB.Net and was stuck on second half of
I need a little help converting some VB.NET code to C#. I have tried
I have some classic asp code that needs converting to asp.net. So far I
I'm converting Visual Basic.Net code to C# in my project. But I have some
I am converting some code from C# to VB.NET, and I need to know
I'm a C# programmer but am converting some code from C# to VB.NET. In
We're converting some .NET 3.5 code to Java (Android). This Java code gives the
I have some VB6 code that I am converting to VB.net and came across
I am converting some Java code to C#. This code is using getGlyphOutline from
I am using an XmlDocument to parse and manipulate an XHTML string, converting some

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.