Visual studio 2010 如何使用MSBuild更改嵌入式资源的默认命名空间?

Visual studio 2010 如何使用MSBuild更改嵌入式资源的默认命名空间?,visual-studio-2010,msbuild,embedded-resource,Visual Studio 2010,Msbuild,Embedded Resource,我正试图在控制台项目中嵌入非托管dll。项目的默认名称空间是公司.Project1Exe。程序集名称(输出exe)命名为project1.exe DLL使用Add as Link选项添加到项目中,并位于Libs\x86子文件夹中 Company.Project1Exe | |--Program.cs |--Libs |--x86 |-My1st.dll |-My2nd.dll 它们已使用Add as Link选项添

我正试图在控制台项目中嵌入非托管dll。项目的默认名称空间是
公司.Project1Exe
。程序集名称(输出exe)命名为
project1.exe

DLL使用
Add as Link
选项添加到项目中,并位于
Libs\x86
子文件夹中

Company.Project1Exe
   |
   |--Program.cs
   |--Libs
       |--x86
           |-My1st.dll
           |-My2nd.dll  
它们已使用
Add as Link
选项添加到项目中,因此不会实际位于
Libs
子文件夹中

我已将这两个DLL的构建操作设置为“嵌入式资源”

默认情况下,MSBuild将使用
DefaultNamspace.ExtendedNamespace.FileName
嵌入这些DLL,其中
ExtendedNamespace
表示项目的目录结构

这导致资源分别作为
Company.Project1.Libs.x86.My1st.dll
Company.Project1.Libs.x86.My2nd.dll
嵌入

我希望使用程序集名称嵌入这些资源,以便它们分别作为
Project1.Libs.x86.My1st.dll
Project1.Libs.x86.My2nd.dll
嵌入


如何才能做到这一点?

解决此问题的一种方法是设置嵌入式资源的
逻辑名称。默认情况下,当您嵌入资源时,您会在csproj文件中找到一个类似于的条目

<EmbeddedResource Include="path to embdedded resource"/>
为了使用不同的名称空间嵌入程序集,可以在上面添加
LogicalName
属性,该属性允许重写默认的msbuild行为

<EmbeddedResource Include="path to embdedded resource"/>
  <Link>Libs\x86\My1st.dll</Link>
  <LogicalName>$(TargetName).Libs.x86.My1st.dll</LogicalName>
</EmbeddedResource>

Libs\x86\My1st.dll
$(TargetName).Libs.x86.My1st.dll

它的缺点似乎是,对于添加的每个资源,都需要这样做。但是,我更希望以某种方式设置此约定,使其成为在我的项目中嵌入任何资源的默认方式,即使用
$(TargetName)
替换默认名称空间

在选择文件时,可以从属性选项卡更新LogicalName,但事实并非如此。相反,必须直接编辑项目文件。
<EmbeddedResource Include="path to embdedded resource"/>
  <Link>Libs\x86\My1st.dll</Link>
  <LogicalName>$(TargetName).Libs.x86.My1st.dll</LogicalName>
</EmbeddedResource>