3

ClickOnce を使用して展開する単一のライブラリ プロジェクトを参照する一連のアプリケーションがあります。このライブラリ プロジェクトは、データ処理やハードウェア インターフェースなどのためにいくつかのライブラリを参照します。これらは LocalCopy=False としてマークされ、ClickOnce を使用する場合、既定で "アプリケーション ファイル..." の前提条件になります。

これはほとんどのアプリケーションに最適ですが、すべてのアプリケーションがすべてのライブラリを必要とするわけではありません。たとえば、データを表示するためだけに使用されるプログラムには、ハードウェア ライブラリは必要ありません。

このスレッドのロジックに従って、ファイルを実際には必要としないため除外するように設定しましたが、「アプリケーションをインストールまたは実行できません。アプリケーションでは、アセンブリ NationalInstruments.Common 8.20.306 をグローバル アセンブリにインストールする必要があります。最初にキャッシュ (GAC) します。」

アプリケーションを含めるように設定すると、インストールされますが、実行時に「アプリケーションを開始できません。アプリケーションベンダーに連絡してください」というエラーが表示されます。このダイアログの詳細ボタンをクリックすると、ログ ファイルが表示されます。

PLATFORM VERSION INFO
Windows             : 5.1.2600.196608 (Win32NT)
Common Language Runtime     : 2.0.50727.3623
System.Deployment.dll       : 2.0.50727.3053 (netfxsp.050727-3000)
mscorwks.dll            : 2.0.50727.3623 (GDR.050727-3600)
dfdll.dll           : 2.0.50727.3053 (netfxsp.050727-3000)
dfshim.dll          : 4.0.31106.0 (Main.031106-0000)

SOURCES
Deployment url          : file://nt_server/prog/Publish/ResultsLoader/ATE%20Results%20Loader.application
Deployment Provider url     : file://nt_server/prog/Publish/ResultsLoader/ATE%20Results%20Loader.application
Application url         : file://nt_server/prog/Publish/ResultsLoader/Application%20Files/ATE%20Results%20Loader_1_0_0_5/ATE%20Results%20Loader.exe.manifest

IDENTITIES
Deployment Identity     : ATE Results Loader.application, Version=1.0.0.5, Culture=neutral, PublicKeyToken=67305960c2b2ce03, processorArchitecture=msil
Application Identity        : ATE Results Loader.exe, Version=1.0.0.5, Culture=neutral, PublicKeyToken=67305960c2b2ce03, processorArchitecture=msil, type=win32

APPLICATION SUMMARY
* Installable application.

ERROR SUMMARY
Below is a summary of the errors, details of these errors are listed later in the log.
* Activation of \\nt_server\prog\Publish\ResultsLoader\ATE Results Loader.application resulted in exception. Following failure messages were detected:
    + Value does not fall within the expected range.

COMPONENT STORE TRANSACTION FAILURE SUMMARY
No transaction error was detected.

WARNINGS
There were no warnings during this operation.

OPERATION PROGRESS STATUS
* [4/23/2012 11:07:42 AM] : Activation of \\nt_server\prog\Publish\ResultsLoader\ATE Results Loader.application has started.
* [4/23/2012 11:07:52 AM] : Processing of deployment manifest has successfully completed.
* [4/23/2012 11:07:52 AM] : Installation of the application has started.
* [4/23/2012 11:07:52 AM] : Processing of application manifest has successfully completed.
* [4/23/2012 11:07:55 AM] : Request of trust and detection of platform is complete.
* [4/23/2012 11:08:02 AM] : Downloading of subscription dependencies is complete.
* [4/23/2012 11:08:02 AM] : Commit of the downloaded application has started.
* [4/23/2012 11:08:05 AM] : Installation of application has successfully completed.

ERROR DETAILS
Following errors were detected during this operation.
* [4/23/2012 11:08:06 AM] System.ArgumentException
    - Value does not fall within the expected range.
    - Source: System.Deployment
    - Stack trace:
        at System.Deployment.Application.NativeMethods.CorLaunchApplication(UInt32 hostType, String applicationFullName, Int32 manifestPathsCount, String[] manifestPaths, Int32 activationDataCount, String[] activationData, PROCESS_INFORMATION processInformation)
        at System.Deployment.Application.ComponentStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)
        at System.Deployment.Application.SubscriptionStore.ActivateApplication(DefinitionAppId appId, String activationParameter, Boolean useActivationParameter)
        at System.Deployment.Application.ApplicationActivator.Activate(DefinitionAppId appId, AssemblyManifest appManifest, String activationParameter, Boolean useActivationParameter)
        at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
        at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)

COMPONENT STORE TRANSACTION DETAILS
* Transaction at [4/23/2012 11:08:05 AM]
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: NRJMNL92.0H4.application
    + System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata
        - Status: Set
        - HRESULT: 0x0
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: ATE Results Loader.exe.manifest
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: ATE Results Loader.xml
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: NationalInstruments.Common.Native.dll.genman
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: NationalInstruments.Common.Native.dll
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: NationalInstruments.DAQmx.dll.genman
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: NationalInstruments.DAQmx.dll
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: NationalInstruments.Common.dll.genman
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: NationalInstruments.Common.dll
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: ATE.dll.genman
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: ATE.dll
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: NationalInstruments.NI4882.dll.genman
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: NationalInstruments.NI4882.dll
    + System.Deployment.Internal.Isolation.StoreOperationStageComponent
        - Status: Installed
        - HRESULT: 0x0
        - Manifest: ATE Results Loader.exe.genman
    + System.Deployment.Internal.Isolation.StoreOperationStageComponentFile
        - Status: Installed
        - HRESULT: 0x0
        - File: ATE Results Loader.exe
    + System.Deployment.Internal.Isolation.StoreOperationInstallDeployment
        - Status: Installed
        - HRESULT: 0x0
        - AppId: file://nt_server/prog/Publish/ResultsLoader/ATE%20Results%20Loader.application#ATE Results Loader.application, Version=1.0.0.5, Culture=neutral, PublicKeyToken=67305960c2b2ce03, processorArchitecture=msil
    + System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata
        - Status: Set
        - HRESULT: 0x0
    + System.Deployment.Internal.Isolation.StoreTransactionOperationType (27)
        - HRESULT: 0x0
4

1 に答える 1

7

もう一度、最終的に解決策を見つけましたが、これが問題である理由をまだ説明できません。

アプリケーション ファイルをリセットした後、この 1 つの参照によって 2 つの DLL アプリケーション ファイルが作成されることに気付きました。1 つは NationalInstruments.Common.Native.dll としてリストされ、もう 1 つはネイティブ マーカーのないものです。dll のネイティブの 1 つには、他のデフォルトとして前提条件として含まれる場所がデフォルトで含まれています。前提条件を除外するように変更し、もう一方を含めるようにすると、アプリケーションがインストールされます。他の NationalInstruments リファレンスでは、問題なく除外できる DLL アプリケーション ファイルが 1 つしか生成されません。

技術的には私の問題は解決しましたが、この参照が 2 つの DLL を生成する理由と、使用されていないのに 1 つを除外できない理由について、誰かが洞察を提供できれば幸いです。

于 2012-05-02T17:28:07.757 に答える