私はプロジェクトFoo1をライブラリFoo2に依存しています。ここでFoo2はライブラリFoo3に依存しています。.netプロジェクトでdllの古いバージョンが使用されることがあるのはなぜですか?
FOO1は、C#のGUIアプリケーションで、foo2ははC++/CLIのライブラリである、Foo3は++ライブラリ
foo2は/ Foo3ライブラリのDLLのネイティブCは、別のフォルダlibに置かれています。 私は気づいた、その時々 Foo1はFoo2.dllファイルの古いバージョンを使用しています。 DLLはLibフォルダからBinフォルダにコピーされ、そこに実行可能ファイルが保存され、それらのフォルダが使用されます。私がFoo3ライブラリを変更すると、Foo2プロジェクトも再構築されます。 DllはLibフォルダに置き換えられました。しかし、Binフォルダには更新されませんので、メインアプリケーションは古いdllを使います。
それはFoo1.csprojファイルからの作品は以下のとおりです。
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1D3976DD-23E4-4798-80A5-AFA8D34E9342}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>AuthorProtoNet</RootNamespace>
<AssemblyName>AuthorProtoNet</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<TargetFrameworkProfile />
<IsWebBootstrapper>false</IsWebBootstrapper>
<!-- Predefined intermediate and output paths, defined for all configurations-->
<IntermediateOutputPath>..\..\Temp\win-$(Platform)-$(Configuration)\$(AssemblyName)\</IntermediateOutputPath>
<OutputPath>..\..\Bin\win-$(Platform)-$(Configuration)\</OutputPath>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<Reference Include="Foo2">
<HintPath>..\..\..\Lib\win-$(Platform) $(Configuration)\Foo2.dll</HintPath>
</Reference>
"Foo2"はあなたがコントロールする別のプロジェクトですか、サードパーティのライブラリですか? "Foo2"はNuGetパッケージとして利用できますか? – EJoshuaS
@EJoshuaS、Foo2は自分のプロジェクトです。 NuGetパッケージとして利用できないサードパーティ製のライブラリではありません – LmTinyToon
あなたのプロジェクト構成を知らなくてもそれは分かりません。それらのすべてを同じソリューションに入れていますか?はいの場合、各プロジェクトの出力パスは何ですか?あなたのプロジェクトのプロジェクト( '.csproj')ファイルをそれぞれ共有できる方が良いでしょう。 –