相关疑难解决方法(0)

Visual Studio 2015,无法更改新资源文件的访问修饰符

我正在尝试在VS2015中创建新的资源文件.我创建它们很好,但是当我尝试更改"访问修饰符"时,下拉列表被禁用...

有任何想法吗?

我正在使用ASP.NET MVC 6(ASP.NET5).该项目是一个类库,但我在Web项目中测试了相同的结果.

谢谢!!

在此输入图像描述

编辑:添加属性窗口 在此输入图像描述

c# asp.net resx visual-studio-2015 asp.net-core

18
推荐指数
2
解决办法
5023
查看次数

具有.resx资源的Windows Phone 8.1上的MissingManifestResourceException

我正在开发一款同时针对Android的Windows Phone 8.1应用程序(Xamarin)

我一直在PCL上添加我的字符​​串资源(.resx)并在我的启动器项目中引用它们以在我的视图上使用它,这在WP 8.1 silverlight上运行正常,但在配置项目以释放​​并运行它时在WinRt上运行在设备上,由于某种原因,我总是得到一个MissingManifestResourceException.我已经尝试过解决这个问题的所有解决方案而没有任何成功.

请注意,在模拟器上一切正常,当解决方案配置器设置为Debug时,它也适用于设备和模拟器.这里唯一的组合是设备和发布.

应用源代码在Github上.

我能够创建一个简单的项目来复制这个问题,基本上它是一个WP 8.1应用程序和一个带有嵌入式资源的PCL项目,下载链接

有人有什么想法吗?

编辑:经过一些更多的测试,我尝试运行一个旧的Windows 8.1应用程序,我已经使用相同的本地化模型,并出现相同的问题所以它接缝是一个工具问题而不是配置问题,因为Windows 8.1应用程序是在市场上,一切都很顺利.

resx embedded-resource windows-phone windows-runtime windows-phone-8.1

15
推荐指数
2
解决办法
2357
查看次数

为什么修改项目输出目录会导致:IOException未处理"无法找到资源'app.xaml'."

为了将项目设置合并到C++和C#项目的属性表中,构造了以下属性表:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!--
      Trying to support both C++ and C# projects by introducing derived 
      properties and setting the appropriate output properties.
  -->
  <PropertyGroup Label="UserMacros">
    <ProjectOrAssemblyName Condition="'$(AssemblyName)'==''">$(ProjectName)</ProjectOrAssemblyName>
    <ProjectOrAssemblyName Condition="'$(ProjectName)'==''">$(AssemblyName)</ProjectOrAssemblyName>
    <ShortPlatform Condition="'$(Platform)'=='Win32'">x86</ShortPlatform>
    <ShortPlatform Condition="'$(Platform)'=='x86'">x86</ShortPlatform>
    <ShortPlatform Condition="'$(Platform)'=='x64'">x64</ShortPlatform>
    <ShortPlatform Condition="'$(Platform)'=='AnyCPU'">AnyCPU</ShortPlatform>
  </PropertyGroup>
  <PropertyGroup>
    <OutputPath>$(OutputRelativePath)/$(ProjectOrAssemblyName)_$(ShortPlatform)_$(Configuration)/</OutputPath>        
    <BaseIntermediateOutputPath>$(OutputRelativePath)/Obj_Exe/$(ProjectOrAssemblyName)_$(ShortPlatform)</BaseIntermediateOutputPath>
    <IntermediateOutputPath>$(BaseIntermediateOutputPath)_$(Configuration)/</IntermediateOutputPath>
    <IntDir>$(IntermediateOutputPath)</IntDir>
    <OutDir>$(OutputPath)</OutDir>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

此属性表将所有构建输出移动到单独的位置OutputRelativePath(在单独的属性表中定义或直接在项目文件中定义)外部目录,其中包含源代码以便于清理等.但是,在设置完成后,构建工作正常并且所有单元测试工作正常,很明显WPF可执行项目并不好,因为使用上面的属性表运行应用程序导致臭名昭着:

IOException was unhandled "Cannot locate resource 'app.xaml'."
Run Code Online (Sandbox Code Playgroud)

为什么更改输出路径会导致此错误?如何确定原因是项目构建输出路径?这可以在生成的代码中看到吗?我找不到?这不是一个错误吗?

注意:使用以下属性表工作,但仅当IntermediateOutputPath包含BaseIntermediateOutputPath时.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <OutputPath>$(OutputRelativePath)/$(AssemblyName)_$(Platform)_$(Configuration)</OutputPath>
    <BaseIntermediateOutputPath>$(OutputRelativePath)/Obj_Exe/$(AssemblyName)_$(Platform)</BaseIntermediateOutputPath>
    <IntermediateOutputPath>$(BaseIntermediateOutputPath)_$(Configuration)</IntermediateOutputPath>
  </PropertyGroup>
</Project> …
Run Code Online (Sandbox Code Playgroud)

c# msbuild wpf xaml visual-studio-2012

9
推荐指数
1
解决办法
1968
查看次数

C# - 在项目之间共享资源文件

我想两个如何在两个(或更多)项目之间共享资源文件?

所以,要恢复,我有三个项目:

包含资源文件的开发项目(CF.NET)(包含所有定义).

我还有两个空的项目但是链接到开发项目,每次只是一个不同的构建,所以当我修改开发项目时,所有三个项目也都会更新.(修改csproj文件.)

问题是,资源文件怎么样?当我尝试从开发项目访问时,我获得了所有资源,但是当我从另外2个人那里尝试时,它会抛出"MissingManifestResourceException".

不知道如何解决这个问题?

谢谢.


[编辑]

这就是我所做的:

创建一个名为"RealProject"的项目,其中包含所有代码(包括资源文件)创建一个名为"LinkedProject"的项目,其中不包含任何内容(我删除了所有文件并修改csproj文件,如下所示:

  <ItemGroup>
    <Compile Include="..\RealProject\**\*.cs" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

所以在LinkedProject目录中我只有:

  • [目录] bin
  • [目录] obj
  • [File] LinkedProject.csproj

整个LinkedProject使用RealProject文件,它只是一个不同的配置构建(请参阅此处了解原因:C# - .NET和CF.NET的代码编译器)

进入该配置后,我无法访问RealProject中的资源文件...

如果您需要屏幕或更详细的解释,请询问.


[编辑]

有了这个代码,它的工作原理,资源管理器没有加载好的程序集名称,但它应该存在更好的解决方案!

Assembly ass = Assembly.ReflectionOnlyLoadFrom(@"..\..\..\RealProject\bin\Debug\RealProject.dll");
ResourceManager manager = new ResourceManager("RealProject.Properties.Resources", ass);
Run Code Online (Sandbox Code Playgroud)

[解]

要检查的事项:

  • LinkedProject与RealProject具有相同的命名空间
  • 添加资源作为链接
  • 清理所有解决方案
  • 重建它

测试!

c# resources

7
推荐指数
1
解决办法
9279
查看次数

如何在子目录中为C#文件编写DependentUpon子句?

我们试图让我们的C#应用程序编译和运行与

  • Visual Studio 10(使用Microsoft编译器),在Windows上,和
  • 在Linux上使用gmcs进行MonoDevelop

但是,.csproj文件中的部分(对于Visual Studio):

<Compile Include="Foo\Bar.cs" />
<EmbeddedResource Include="Foo\Bar.resx">
    <DependentUpon>Bar.cs</DependentUpon>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)

必须在使用MonoDevelop/gmcs之前进行如下更改(如果没有,在运行时,resources.GetObject()将抛出MissingManifestResourceException):

<Compile Include="Foo\Bar.cs" />
<EmbeddedResource Include="Foo\Bar.resx">
    <DependentUpon>Foo\Bar.cs</DependentUpon>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)

如何将其重写为他们都接受的形式?(DependentUpon当然,没有删除元素.)

csproj monodevelop visual-studio

7
推荐指数
1
解决办法
1891
查看次数

C# - 无法从ResourceManager获取字符串(来自附属程序集)

我正在开发一个可本地化的应用程序.在我的"本地"资源文件中,我使用默认语言(英语),如果可能的话,我加载用户的首选项和文化,并加载翻译成语言的字符串.

所以我做了什么:

private static CultureInfo _culture = CultureInfo.CurrentUICulture;
private static ResourceManager _manager;

private static void ToNeutralCulture()
{
    while (!_culture.IsNeutralCulture)
    {
        _culture = _culture.Parent;
    }
}

private static void LoadCulture()
{
    ResourceManager manager = Properties.Resources.ResourceManager;

    try
    {
        ToNeutralCulture();

        string assembly = Assembly.GetCallingAssembly().GetName().CodeBase;
        string assemblyDir = Path.GetDirectoryName(assembly);
        string assemblyName = Path.GetFileNameWithoutExtension(assembly);
        string resourceFileName = string.Format(CultureInfo.InvariantCulture,
            @"{0}\{1}_{2}.dll",
            assemblyDir,
            assemblyName,
            _culture.Name.ToUpper());

        FileInfo resourceFile = new FileInfo(resourceFileName);
        if (resourceFile.Exists)
        {
            Assembly resourceAssembly = Assembly.LoadFrom(resourceFile.FullName);
            string[] manifests = resourceAssembly.GetManifestResourceNames();

            if (manifests.Length == 1)
            {
                manager = …
Run Code Online (Sandbox Code Playgroud)

c# resources assemblies

4
推荐指数
1
解决办法
3万
查看次数

使用MSBuild构建后运行测试时出现MissingManifestResourceException(.mresource在清单中有路径)

我在命令行上使用MSBuild在构建服务器上的C#项目的嵌入资源有问题.在Visual Studio中构建和运行测试时,该项目工作得很好,但是当从命令行运行MSBuild时,运行测试时会出现以下问题:


System.Resources.MissingManifestResourceException:找不到适合指定文化或中性文化的任何资源.确保".Properties.Resources.resources"在编译时正确嵌入或链接到程序集"",或者所有所需的附属程序集都是可加载和完全签名的.

System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture,Boolean)中的System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo文化,Dictionary`2 localResourceSets,Boolean tryParents,Boolean createIfNotExists,StackCrawlMark和stackMark)中的System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)位于System.Resources.get_SomeResource()的System.Resources.ResourceManager.GetString(String name,CultureInfo culture)的System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture,Boolean createIfNotExists,Boolean tryParents)中的createIfNotExists,Boolean tryParents,StackCrawlMark和stackMark\Properties\Resources.Designer.cs:第87行


我已将问题跟踪到生成的IL(我使用ildasm).在Visual Studio中进行扩展时,在程序集的清单中设置以下内容:

.mresource public <PROJECTNAME>.Properties.Resources.resources
{
  // Offset: 0x00000000 Length: 0x00000236
}
Run Code Online (Sandbox Code Playgroud)

但是在使用MSBuild构建时会生成以下输出:

.mresource public '../..//Build/<PROJECTNAME>_AnyCPU_Debug_Obj/<PROJECTNAME>.Properties.Resources.resources'
{
  // Offset: 0x00000000 Length: 0x00000236
}
Run Code Online (Sandbox Code Playgroud)

因为可以看到资源的路径突然成为资源名称的一部分.

有没有人有任何想法如何解决这个问题?

c# msbuild il visual-studio-2010 embedded-resource

3
推荐指数
1
解决办法
4715
查看次数