2017-11-07 4 views
0

Ich habe 3 Nuget-Pakete in meinem Projekt enthalten. Wenn ich die "Debug" -Version erstelle, werden die DLLs in das Verzeichnis bin \ debug kopiert und das Projekt wird korrekt kompiliert.VS2017 Nuget Pakete kopiert in bin debug, aber nicht bin release beim Kompilieren

Wenn ich jedoch versuche, eine Release-Version zu erstellen, bekomme ich eine 'Der Typ oder Namespacename' Paketname 'konnte nicht gefunden werden.

Die Datei CSPROJ Projekt ist wie folgt:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <DocumentationFile>bin\Debug\MyProject.XML</DocumentationFile> 
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors> 
    <Prefer32Bit>false</Prefer32Bit> 
    </PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    <DocumentationFile>bin\Release\MyProject.XML</DocumentationFile> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <Prefer32Bit>false</Prefer32Bit> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    </Reference> 
    <Reference Include="Excel, Version=2.1.2.3, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL"> 
    </Reference> 
    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL"> 
    </Reference> 
    </ItemGroup> 

Ich erhalte die gleiche Fehlermeldung für alle drei Seiten, und sie nur Fehler, die ich sind erhalten im Zusammenhang mit diesen nicht vorhanden. Es gibt keine weiteren Kompilierungsfehler.

Für jede dieser DLLs ist der Pfad (Eigenschaften) für die Debug-Version das bin \ Debug-Verzeichnis, aber ich weiß nicht, wie das festgelegt wird.

Ich bin mir nicht sicher, wie ich diese Pakete in mein bin \ release Verzeichnis bekommen kann (außer sie manuell zu kopieren). Kann jemand erklären, was ich verpasst habe oder falsch mache?

+0

Können Sie Ihre Frage so bearbeiten, dass sie den Inhalt Ihrer Datei packages.config enthält? Haben Sie den Paketmanager auch verwendet? –

+0

Wohin zeigt der 'HintPath'? oder ist diese Pfadeigenschaft, die du erwähnt hast? Wenn Sie dies aus einem sauberen Projekt reproduzieren können, teilen Sie bitte das msbild-Binärprotokoll ('msbuild/p: Konfiguration = Release/bl 'in der Entwickler-Eingabeaufforderung, um' msbuild.binlog' zu erstellen) –

+0

Sind Sie diese drei Pakete über NuGet hinzugefügt? Diese Referenzinformationen scheinen falsch zu sein, "HintPath" fehlt, Paketname und Version stimmen nicht überein. Ich kann keines dieser drei Pakete auf nugget.org finden. Daher sollten Sie detailliertere Schritte angeben, damit dieses Problem reproduziert werden kann. –

Antwort

0

Vielen Dank für Ihre Antworten. Ich habe das Problem gelöst und mein Verständnis verbessert, wie das alles funktioniert.

Nuget holt die Pakete und legt sie in das Paketverzeichnis im Lösungsverzeichnis.

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="DocumentFormat.OpenXml" version="2.5" targetFramework="net45" /> 
    <package id="ExcelDataReader" version="2.1.2.3" targetFramework="net45" /> 
    <package id="SharpZipLib" version="0.86.0" targetFramework="net45" /> 
</packages> 

Die ‚HintPath‘ in der CSPROJ-Datei: Es wird auch die folgende packages.config Datei zur Lösung Verzeichnis hinzuzufügen. Dies wird durch den Compiler, die Bereitstellung des Quellort für die Assembly-Dateien verwendet, die den relevent ist \ Debug oder sind \ Release-Verzeichnis kopiert werden, je nach Bedarf:

<ItemGroup> 
    <Reference Include="DocumentFormat.OpenXml, Version=2.5.5631.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>packages\DocumentFormat.OpenXml.2.5\lib\DocumentFormat.OpenXml.dll</HintPath> 
    </Reference> 
    <Reference Include="Excel, Version=2.1.2.3, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL"> 
    <HintPath>packages\ExcelDataReader.2.1.2.3\lib\net45\Excel.dll</HintPath> 
    </Reference> 
    <Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL"> 
    <HintPath>packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath> 
    </Reference> 
</ItemGroup> 

Meine Probleme waren, dass ich hatte, die entfernt " HintPath 'als es direkt auf das falsche zeigte, und dann hat nichts funktioniert. Die Assemblies in meinem bin \ Debug, wo Sie eine Debug-Version erstellen, die auf den falschen Satz von Assembly-Dateien verweist. Die obigen Codebausteine ​​funktionieren nun korrekt.

Verwandte Themen