1

VS2012 で WPF プロジェクトをコンパイルしようとすると、次のコンパイル エラーが発生します。

リソース ファイル 'c:\Users\mysuerID\Documents\Visual Studio 2012\Projects\MyAppNAme\MyAppNAme\obj\Debug\' の読み取りエラー -- '指定されたパスが見つかりません。' C:\Users\mysuerID\Documents\Visual Studio 2012\Projects\MyAppNAme\MyAppNAme\CSC MyAppNAme

問題は、VS が CSC コマンドを生成するときに、次のような部分的に重複した余分な /resource パラメータが含まれていることです。

/resource:obj\Debug\ /resource:obj\Debug\MyAppName.Properties.Resources.resources 

CSC は最初のパラメーターのみを調べ、ファイル名が指定されていないため、エラーをスローします。コマンド ライン モードに移動し、追加のパラメーターを指定して、または指定せずにテストし、それが問題であることを確認しました。プロジェクトを手動でコンパイルする必要はありません。

VS がこれらのパラメーターをどのように考え出すのか、またこの余分な無効なパラメーターを取り除く方法を知っている人はいますか?

ビルド出力は次のようになります (Framework 4.5)

1>Target "MainResourcesGeneration" in file "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFX.targets" from project "C:\Users\jws15592\Documents\Visual Studio 2012\Projects\MyAppName\MyAppName\MyAppName.csproj" (target "PrepareResources" depends on it):
1>Building target "MainResourcesGeneration" completely.
1>Input file "C:\Users\jws15592\Documents\Visual Studio 2012\Projects\MyAppName\MyAppName\obj\Debug\MainWindow.baml" is newer than output file "obj\Debug\".
1>Task "Message" skipped, due to false condition; ('$(MSBuildTargetsVerbose)'=='true') was evaluated as (''=='true').
1>Using "ResourcesGenerator" task from assembly "PresentationBuildTasks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
1>Task "ResourcesGenerator"
1>  
1>  
1>  Microsoft (R) Build Task 'ResourcesGenerator' Version '4.0.30319.17929 built by: FX45RTMREL'.
1>  Copyright (C) Microsoft Corporation 2005. All rights reserved.
1>  
1>  
1>  Generating .resources file: 'obj\Debug\'...
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFX.targets(709,5): error RG1000: Unknown build error, 'Could not find a part of the path 'C:\Users\jws15592\Documents\Visual Studio 2012\Projects\MyAppName\MyAppName\obj\Debug\'.' 
1>Done executing task "ResourcesGenerator" -- FAILED.
1>Done building target "MainResourcesGeneration" in project "MyAppName.csproj" -- FAILED.

プロジェクト ファイルの ItemGroup:

  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs">
      <SubType>Code</SubType>
    </Compile>
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
    <Compile Include="Properties\Settings.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    </Compile>
    <EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
    <None Include="app.config" />
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    </None>
    <AppDesigner Include="Properties\" />
  </ItemGroup>
4

3 に答える 3

1

回避策として、実際のリソース ファイルを「不足している」ファイルにシンボリック リンクすることができresources.resourcesます。私は同じ問題に遭遇し、昇格したコマンドプロンプトに次のように入力するだけで修正しました。

mklink c:\MySolution\MyLibrary\MyLibrary\Properties\Resources.resources c:\MySolution\MyLibrary\MyLibrary\Properties\Resources.Designer.cs
于 2013-09-14T05:07:50.470 に答える
0

それは奇妙なものです。

この奇妙な動作に影響を与える可能性のある IDE から直接いじることができる設定があるかどうかはわかりません。あなたが行ったように、コマンド ライン パラメーターを確認した後、手を汚して、プロジェクト ファイルを何らかのテキスト エディター (たとえば、メモ帳など) で開きます。そこで、原因が見つかるまで、または子要素としてすべての<ItemGroup>ノードをチェックします。確認する必要があるその他のファイルは、Properties フォルダー内の * .resxファイルです。<EmbeddedResource><Content Include="Something">

それが役に立てば幸い。

于 2013-07-21T17:02:19.507 に答える