Belirli platformlar için kitaplık oluşturması gereken CEFsharp'a bağlı bir kitaplık oluşturdum. Yani AnyCPU desteği yok.NuGet paketine x86 ve x64 kitaplıkları ekleme
Şimdi bunu bir NuGet'e paketlemek istiyorum. Anladığım kadarıyla, bu dosyaları derleme klasörüne koymanız ve başvuru için doğru dll'i seçen bir .targets
dosyasına sahip olmanız gerekir. Bu yüzden bir Nuget paketi bu gibi bakarak ile sona erdi: Şimdiye kadar iyi
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PlatformCheck" BeforeTargets="InjectReference"
Condition="(('$(Platform)' != 'x86') AND ('$(Platform)' != 'x64'))">
<Error Text="$(MSBuildThisFileName) does not work correctly on '$(Platform)' platform. You need to specify platform (x86 or x64)." />
</Target>
<Target Name="InjectReference" BeforeTargets="ResolveAssemblyReferences">
<ItemGroup Condition="'$(Platform)' == 'x86' or '$(Platform)' == 'x64'">
<Reference Include="MyLib">
<HintPath>$(MSBuildThisFileDirectory)$(Platform)\MyLib.dll</HintPath>
</Reference>
</ItemGroup>
</Target>
</Project>
:
lib
monodroid
MyLib.dll
xamarin.ios10
MyLib.dll
net45
MyLib.dll (x86)
build
net45
x86
MyLib.dll (x86)
x64
MyLib.dll (x64)
MyLib.targets
Ben
.targets
dosyanın aşağıdaki içini koydu. Şimdi sorun.
<Reference Include="MyLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d64412599724c860, processorArchitecture=x86">
<HintPath>..\packages\MyLib.0.0.1\lib\net45\MyLib.dll</HintPath>
<Private>True</Private>
</Reference>
Ben .targets
dosya hakkında söz bir şey görmüyorum rağmen: Yeni WPF projeye bu Nuget eklerken, kütüphaneye referans gibi .csproj
dosyasında görünen görüyoruz. Bu hala NuGet 3 ile bunu yapmanın yolu mu? Ben yanlış bir şey mi yaptım? Şu anda bu x86 lib'in referansı nedeniyle x64 çalıştırırken çalışma zamanında başarısız oluyor.
project.json kullanan daha yeni Windows 10 projelerini desteklemeniz gerekmiyorsa, lib \ Net45 dizinini kaldırmayı deneyeceğim. NuGet bir WPF projesine yüklenmeli ve sadece .targets dosyasını proje dosyasına (.csproj) içe aktarmalıdır. –
UWP'yi veya yeni project.json öğelerini kullanan daha yeni projeleri desteklemeyi planlamıyorum. Yarın tekrar deneyeceğim. Yine de, nuget'in eklendiği csproj dosyasında başvurulan hedefleri görmemek yine de şaşırdı. – Cheesebaron
Lib \ net45 klasörünü kaldırmayı denedim, bu da hiçbir şey yapmadı, ancak hiç yapmadı, çünkü dll'yi bulamadı. – Cheesebaron