2017-11-07 8 views
0

내 프로젝트에 3 개의 Nuget 패키지가 포함되어 있습니다. '디버그'버전을 빌드하면 dll이 bin \ debug 디렉토리에 복사되고 프로젝트가 올바르게 컴파일됩니다.VS2017 Nuget bin debug에 복사되었지만 bin release에 복사되지 않은 패키지

그러나 릴리스 버전을 빌드 할 때 '유형 또는 네임 스페이스 이름'packagename '을 (를) 찾을 수 없습니다. 나는 모든 세 페이지에 대해 같은 오류 메시지가 무엇입니까

<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> 

을, 그들은 오류 만이 내가이 존재하지 않는 관련이받을 다음과 같이

프로젝트 .csproj 파일입니다. 다른 컴파일 오류가 없습니다.

이러한 각 dll에 대해 디버그 버전의 경로 (속성)는 bin \ Debug 디렉터리이지만이 설정 방법을 알지 못합니다.

수동으로 복사하는 것 이외에이 패키지를 bin \ release 디렉토리에 어떻게 가져올 수 있는지 잘 모르겠습니다. 누군가 내가 놓친 것을 설명하거나 잘못하고있는 사람이있을 수 있습니다.

+0

질문을 편집하여 packages.config 파일의 내용을 포함시킬 수 있습니까? 또한 패키지 관리자를 사용 했습니까? –

+0

'HintPath'는 어디에 있습니까? 또는 언급 한 경로 속성입니까? 깨끗한 프로젝트에서 이것을 재현 할 수 있다면 msbuild 바이너리 로그 (msbuild/p : Configuration = Release/bl' 개발자 빌드 명령 프롬프트에서'msbuild.binlog'를 생성하십시오)를 공유하십시오. –

+0

NuGet을 통해 세 패키지를 추가 했습니까? 참조 정보가 틀린 것 같아요.'HintPath'가 누락되었습니다. 패키지 이름과 버전이 일치하지 않습니다. 이 세 패키지 중 하나를 nuget.org에서 찾을 수 없습니다. 따라서이 문제를 재현 할 수 있도록 자세한 단계를 제공해야합니다. –

답변

0

감사합니다. 나는이 문제를 해결하고 이것이 어떻게 작동하는지에 대한 나의 이해를 향상시켰다.

Nuget은 패키지를 가져 와서 솔루션 디렉토리의 packages 디렉토리에 넣습니다. 또한 다음 packages.config 파일을 솔루션 디렉토리에 추가합니다.

<?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> 

.csproj 파일의 'HintPath'. 필요에 따라이는와 관계있는 빈 \ 디버그 또는 빈 \ 릴리즈 디렉토리에 복사 어셈블리 파일의 소스 위치를 제공하는 컴파일러에 의해 사용됩니다

<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> 

내 문제는 내가 제거했다고했다 ' HintPath '가 직접 잘못 지적한 것처럼 작동하지 않습니다. 내 bin \ Debug에있는 어셈블리는 잘못된 어셈블리 파일 집합을 참조하는 디버그 버전을 빌드하는 곳입니다. 위의 코드 블록이 올바르게 작동합니다.