我试图根据配置将资源从两个不同的目录嵌入CSPROJ中。这篇文章给了我这个主意,但是没有用。任何帮助表示赞赏。
<Choose>
<When Condition="'$(Configuration)' == 'Debug'">
<ItemGroup>
<EmbeddedResource Include="..\Debug\file.txt">
<Link>Files\file.txt</Link>
</EmbeddedResource>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<EmbeddedResource Include="..\Release\file.txt">
<Link>Files\file.txt</Link>
</EmbeddedResource>
</ItemGroup>
</Otherwise>
</Choose>
Run Code Online (Sandbox Code Playgroud)
我也尝试过,但是效果也一样。
<ItemGroup>
<EmbeddedResource Include="..\$(Configuration)\file.txt">
<Link>Files\file.txt</Link>
</EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
您只需将条件放置在 ItemGroup 元素上:
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<EmbeddedResource Include="..\Debug\file.txt">
<Link>Files\file.txt</Link>
</EmbeddedResource>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<EmbeddedResource Include="..\Release\file.txt">
<Link>Files\file.txt</Link>
</EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
正如我在对你的问题的评论中所说,这应该对你有用:
<ItemGroup>
<EmbeddedResource Include="..\$(Configuration)\file.txt">
<Link>Files\file.txt</Link>
</EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
即使您可能会在 VS 属性编辑器的“完整路径”中看到旧值 - 当您构建时,它会尊重您当前的配置。在最坏的情况下,应通过解决方案资源管理器的刷新按钮或重新加载项目来更新 VS 属性编辑器。可能将选择更改为其他文件并返回 file.txt 将足以刷新属性编辑器。
更新:
我已经弄清楚在这种情况下,通过点击解决方案资源管理器的“刷新”按钮,完整路径会发生变化 - 它是 Dll 引用的提示路径。
<Reference Include="MyDll">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\$(Configuration)\MyDll.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
仅当所有 DLL(在所有目标文件夹中)确实存在时,此功能才有效。
由于某些原因,项目文件的完整路径不会刷新 - 对于文件项目,VS 始终认为当前配置名为 Debug -即使您从项目中删除调试配置。幸运的是,这个 VS Bug 不会影响构建 - 它仍然会获取有效的文件。
| 归档时间: |
|
| 查看次数: |
5150 次 |
| 最近记录: |