.NET実行可能ファイルにアセンブリマニフェストを追加するにはどうすればよいですか?
アセンブリマニフェストは、リソースタイプ_RT_MANIFEST
_(24)の.NETポータブル実行可能ファイル(PE)に追加されるXMLファイルです。
アセンブリマニフェストは、実行可能ファイルに関するいくつかのことを宣言するために使用されます。例:
私が優れた開発者であるためにDPIスケーリングを無効にしたい場合:
_<!-- We are high-dpi aware on Windows Vista -->
<asmv3:application xmlns:asmv3="urn:schemas-Microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.Microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
_
windows 7で設計およびテストされたことを宣言できます。Windows7のバグに依存し続ける必要があります。
_<!-- We were designed and tested on Windows 7 -->
<compatibility xmlns="urn:schemas-Microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
_
私は自分が優れた開発者であり、ファイルとレジストリの仮想化を必要としないと宣言できます
_<!-- Disable file and registry virtualization -->
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
_
Microsoft Common Controlsライブラリの特定のバージョン6に依存することを宣言できます。
_<!-- Dependency on Common Controls version 6 -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
_
gDI +の特定のバージョンに依存していることを宣言できます。
_<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.GdiPlus" version="1.0.0.0" processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
_
昔は 、リソーススクリプトファイル(_*.rc
_)を作成します、例えば:
wumpa.rc
_ 1 24 AssemblyManifest.xml
_
そのファイルをプロジェクトに追加すると、コンパイラーは_.rc
_ファイルをコンパイルします。最終的な実行可能イメージにリソースを含めます。
Visual Studio 2010には、プロジェクトにリソーススクリプトファイルを追加する方法がないようです 。
Visual Studio 2010のプロジェクトにリソーススクリプトを追加するにはどうすればよいですか?
Visual Studio 2010のプロジェクトにアセンブリマニフェストを追加するにはどうすればよいですか?
注:ソリューションはソース管理と複数の開発者がいる環境で動作する必要があります作業)。
Update:Michael Foxは、プロジェクトプロパティダイアログを使用してアセンブリマニフェストを含めることができると示唆していますが、を示していませんどこ:
更新:試したこと:
Embed manifest with default settings
_のままにします。設定ではなく、default設定でマニフェストを埋め込むため、機能しません。
Manifestで、コンボオプションを_Create application without a manifest
_に変更します。
マニフェストが埋め込まれていないため機能しません
Resourcesの下でResource Fileラジオオプションを選択します:
アセンブリマニフェスト(またはアセンブリマニフェストを含むリソーススクリプト)を選択できないため機能しません
Resourcesで、Resource Fileラジオオプションを選択し、パスを入力しますアセンブリマニフェストXMLファイル:
アセンブリマニフェストが表示されるとVisual Studioがチョークするため機能しません:
Visual Studioがリソーススクリプトを提示するとチョークするため動作しません:
_AssemblyManifest.xml
_をプロジェクトに追加し、Manifestコンボボックスで探します:
アセンブリマニフェストファイルがオプションとしてリストされていないため機能しません
私はスクリーンショットを保持できるものを他にもたくさん持っています(ソリューションに.rcファイルを追加し、ドロップダウンで探し、「マニフェストなし」を選択し、_
wumpa.rc
_ビルドアクションをさまざまなものに変更し、_.rc
_ファイルを個別のリソースコンパイラを使用して、手動で、またはpre-build/msbuildステップで使用し、そのリソースとして_.res
_ファイルを選択します。質問に余分なバルクを追加するのをやめて、回答を期待します。
アプリケーションのマニフェストにカスタム情報を追加する場合は、次の手順を実行できます。
これにより、app.manifest
という名前のファイルがプロジェクトに追加され、必要に応じて開いて変更できます。
スクリーンショットを使用した同様の手順は、MSDNの Managed Applications as DPI-Aware から解除されました:
ソリューションエクスプローラーで、プロジェクトを右クリックし、Addをポイントして、New Itemをクリックします。
Add New Itemダイアログボックスで、Application Manifest Fileを選択し、Add。 app.manifestファイルが表示されます。
次のテキストをコピーしてapp.manifestファイルに貼り付け、保存します。
<?xml version="1.0" encoding="utf-8"?>
<asmv1:Assembly manifestVersion="1.0" xmlns="urn:schemas-Microsoft-com:asm.v1"
xmlns:asmv1="urn:schemas-Microsoft-com:asm.v1"
xmlns:asmv2="urn:schemas-Microsoft-com:asm.v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<!-- Disable file and registry virtualization. -->
<trustInfo xmlns="urn:schemas-Microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-Microsoft-com:asm.v3">
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!-- <requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
-->
</requestedPrivileges>
</security>
</trustInfo>
<!-- We are high-dpi aware on Windows Vista -->
<asmv3:application xmlns:asmv3="urn:schemas-Microsoft-com:asm.v3">
<asmv3:windowsSettings xmlns="http://schemas.Microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
<!-- Declare that we were designed to work with Windows Vista and Windows 7-->
<compatibility xmlns="urn:schemas-Microsoft-com:compatibility.v1">
<application>
<!--The ID below indicates application support for Windows Vista -->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
<!--The ID below indicates application support for Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
</application>
</compatibility>
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</asmv1:Assembly>
ソリューションエクスプローラーで、projectを右クリックし、Propertiesをクリックして、app.manifestが使用されます。
これで、アプリケーションは「Windows用に設計する」必要があると明示され、
Service Pack 1がインストールされたVisual Studio 2010 Professionalがあります。 Windows 7 Ultimate 64ビットで実行しています。これらの指示に従うと、プロジェクトプロパティのリソースブロックに"デフォルト設定でマニフェストを埋め込む"が表示され、オプションも無効になります。ビルドするときに、リソースビューでDLLを開いて確認したように、マニフェストはDLLに埋め込まれません。
ただし、私が:
マニフェストファイルは適切に埋め込まれています。これは、リソースビューにDLLをロードすることで確認できます。 。
Visual Studio 2008では、これは[プロジェクトプロパティ]ウィンドウで実行できます。 2010年も同じだと思います。プロジェクトを右クリックしてプロパティを選択し、アプリケーションタブでマニフェストを選択できます。最初にプロジェクトに追加する必要がありますが、既存のファイルを追加することで簡単に追加できます。