标签: copy-local

什么时候copy-local应该设置为true,什么时候不应该?

我想知道什么时候设置copy-local=true引用有任何启发式方法?

如果引用类型只在内部使用我可以设置copy-localtrue,但如果被引用类型暴露作为参数和返回值我设置copy-localfalse和指示时,应使用我的媒体库的依赖特定版本应参照?

谁能为我澄清一下这个?

.net msbuild reference copy-local

69
推荐指数
5
解决办法
6万
查看次数

在nuget包中将内容文件设置为"copy local:always"

我在后期构建事件中使用此命令从项目生成nuget包.变量%conf%设置为正确的配置(调试或发布),并且%1是项目名称(例如"MyCompany.MyProject").

nuget pack -Prop Configuration=%conf% "%1.csproj" -exclude *.sql -IncludeReferencedProjects
Run Code Online (Sandbox Code Playgroud)

此软件包仅供我们自己使用,永远不会在nuget上发布.它以我们的私有存储库结束.

在项目中,有一个设置为generate action : content和的文件copy local : always.(我的视觉工作室是法语,所以我不是百分之百地确定了它的变形).我们来命名吧importantfile.xml.

在生成的包中,我最终得到了这个结构:

- content
    - importantfile.xml
- lib
    -net45 (.NetFramework,Version=v4.5)
        -MyCompany.MyProject.dll
Run Code Online (Sandbox Code Playgroud)

哪个好,我想importantfile.xml部署在包中,因为,这个文件很重要!

当我在另一个项目中安装软件包时,importantfile.xml将部署在项目的根目录下.没关系.但事实并非如此copy local : always.

我需要的importantfile.xmlcopy local : always在这个项目中,我安装我的包.

我怎样才能做到这一点?

备注:

可以copy local : always在安装软件包后立即设置文件,这没什么大不了的.如果以后更新软件包会让这个属性按原样,我会忍受它,但事实并非如此.当更新包,copy local被重置了以never(为说明这里).

项目文件夹中有一个nuspec文件,这里是:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version> …
Run Code Online (Sandbox Code Playgroud)

copy-local visual-studio nuget nuget-package visual-studio-2012

65
推荐指数
4
解决办法
3万
查看次数

MSBuild ProjectReference:private("Copy Local") - 允许的值和行为是什么?

TL; DR是否有任何官方文档详细描述<private>/"复制本地"选项如何与MSBuild一起使用?应该考虑什么价值?


当你添加一个项目引用从一个项目在Visual Studio中的另一个,它会加入<ProjectReference Include=".....csproj">.csproj的MSBuild文件.

当您 Visual Studio中的一个项目文件引用添加到文件系统中的程序集文件时,它将添加<Reference Include="Foo"> <HintPath>....Foo.dll</HintPath> ....csprojMSBuild文件.

这两种情况下,Visual Studio的设置Copy Local = True|False,一个子元素<Private>True</Private><Private>False</Private>将增加.

Reference并且ProjectReference似乎在Common MSBuild Project Items下记录:

<ProjectReference>
  Represents a reference to another project.

  Item Name    Description
  -------------------------
   Name         ...
   Project      ...
   Package      ...

<Reference>
  Represents an assembly (managed) reference in …
Run Code Online (Sandbox Code Playgroud)

.net msbuild copy-local visual-studio msbuild-projectreference

59
推荐指数
1
解决办法
2万
查看次数

默认情况下将"复制本地"设置为False?

我可以在Visual Studio中将"复制本地"的默认选项设置为False吗?在大多数情况下,当我添加一个dll作为项目的依赖项时,我希望将Copy Local属性设置为False.默认情况下,它是True.有没有办法更改Visual Studio的默认行为?(2008年)

copy-local visual-studio

36
推荐指数
4
解决办法
3万
查看次数

项目参考的"复制本地"是否可传递?

WRT.拟议的欺骗:由于这里的问题暗示了相关的问题,我宁愿认为这不是一个骗局.

首先,我确实阅读了"复制本地"和项目参考的最佳实践是什么?(也是这个)我无论如何都要试试这个,但是得到一般反馈似乎是必要的,因为关于这个东西的文档非常糟糕,我只是在VS2010上,也许他们在新版本中改变了一些东西很高兴知道.

其次,我只对这个问题的项目引用感兴趣,因为我读过GAC的程序集处理方式不同而GAC与我的问题无关.

第三,在阅读了建议的欺骗之后,但更多的是@Albireo这里的好答案,它似乎也很重要,区分文件依赖,其中依赖引用dll汇编文件和项目依赖(即我问的是什么) about),其中依赖项引用项目并隐式引用该项目的输出文件.

无论如何,这是我认为有点奇怪的情况,但仍然:

  • 2个C#可执行项目
  • n C#dll组装项目
  • 这两个可执行文件具有不同的输出目录,因为它们将单独部署,并且它们在开发人员计算机上也是分开的
  • 这两个可执行文件依赖于某些DLL程序集(可能相互依赖)
  • 有三个输出目录:
    • /x1 可执行1项目
    • /x2 对于可执行2项目
    • /lib 对于所有的dll程序集

该DLL组件已经Copy Local设置false了自己的项目引用,因为它们都建立在相同的输出目录.

2个可执行项目已设置Copy Localtrue所有他们直接引用的DLL组件项目引用,这样的DLL将被复制到/x1 /x2分别.

现在的问题是.到被DLL文件不能直接通过一个可执行的项目引用,但传递地通过引用的程序集:请问组件,这是只有通过其他组件引用传递性,被复制到输出文件夹的可执行文件的,当"复制本地" 设定为第一次装配时是真的吗?

例: …

.net c# msbuild copy-local visual-studio

30
推荐指数
2
解决办法
7085
查看次数

仅在XAML中使用的程序集不会复制到bin文件夹

在WPF项目中,只有在XAML中使用的引用不被复制到bin文件夹,即使CopyLocal设置为true,在抱怨这个职位.对于MVVM模式,通常使用第三方控件而根本没有代码隐藏引用.

此帖的启发,我正在使用下面的解决方法.然而,这很容易,必须手动维护变量列表与整个项目中XAML文件中实际使用的变量列表同步,这些变量列表会不断变化.我的问题是,是否有真正的解决方案或更好的解决方法?(我知道使用post-build脚本的想法,IMHO不易发现并且更容易受到更改.)

internal static class BuildTricker
{
    private static readonly RadTreeView radTreeView;
    static BuildTricker()
    {
        // Set and get once to avoid compiler optimization.
        radTreeView = null;
        if (radTreeView != null)
        {
            throw new InvalidOperationException("This should never happen.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

msbuild wpf xaml copy-local

11
推荐指数
1
解决办法
1139
查看次数

无论复制本地设置如何,VS 2015都会复制到项目引用的GAC引用

我为这种行为提出了一个连接问题.

VS 2015复制到输出GAC项目引用的引用,而不管复制本地设置如何. VS 2010不会使用相同的解决方案和项目,尊重复制本地属性.到目前为止,我发现的唯一解决方法是Microsoft.Web.Services3.dll在项目A中添加一个直接引用,并将其设置为复制local = false.

重现步骤:

Project A
|__ Project B (Project Reference, copy local = true)
     |__Microsoft.Web.Services3.dll (GAC, copy local = false)
Run Code Online (Sandbox Code Playgroud)

实际:

Microsoft.Web.Services3.dll 正被复制到项目A的输出目录中.

预期:

Microsoft.Web.Services3.dll 没有被复制到项目A的输出目录.

知道为什么会这样吗?在MSDN文档中明确指出GAC的依赖不应该被复制到输出和VS 2010尊重这一点.

.net c# global-assembly-cache copy-local visual-studio-2015

11
推荐指数
1
解决办法
1443
查看次数

如何在未经我许可的情况下让Visual Studio在构建期间停止复制DLL?

我有一个依赖于几个DLL引用的Visual Studio项目.以下是我的csproj中这些引用的示例:

<ItemGroup>
  <Reference Include="Class1.Project1">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>..\bin\Class1.Project1.dll</HintPath>
    <Private>False</Private>
  </Reference>
  <Reference Include="Class1.Project2">
    <SpecificVersion>False</SpecificVersion>
    <HintPath>..\bin\Class1.Project2.dll</HintPath>
    <Private>False</Private>
  </Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

但是,当我将此类作为项目依赖项包含在Web站点项目中时,Visual Studio将查找上面显示的依赖项的依赖项.在构建期间,Visual Studio将"复制本地"属性默认为"True",并将这些依赖项复制到我的网站的〜/ bin目录中.

反过来,这会覆盖此目录中已存在的DLL文件的版本.这会导致以下错误:

无法加载文件或程序集'Class5.Project5,Version = 3.6.1861.2,Culture = neutral,PublicKeyToken = dfeaee0e3978ac79'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

如何让我的Visual Studio默认情况下,"复制本地"设置为"假"的一切?我不希望Visual Studio在构建期间自动复制DLL文件.我也不希望我的领带构建以非常一个DLL的特定版本.

copy-local visual-studio

8
推荐指数
1
解决办法
8116
查看次数

如何使Visual Studio项目文件复制间接引用?

在此输入图像描述

如屏幕截图所示,ClassLibrary1依赖于ClassLibrary2,ClassLibrary2依赖于ClassLibrary3.并且"复制本地"设置为"真".但是当我编译ClassLibrary1时,ClassLibrary3将不会被复制到bin文件夹中.

那么如何配置Visual Studio项目文件以使其复制间接引用?

.net reference visual-studio-2010 copy-local project-files

8
推荐指数
1
解决办法
2917
查看次数

复制本地和系统dll' - 重点是什么?

Visual Studio默认将所有dll复制到每个项目的bin文件夹.这还包括系统dll'(mscorlib.dll和System.dll除外),例如System.Xml.Linq,System.ComponentModel.Composition(包括自SL4以来)等.

由于这些文件包含在每个XAP中,因此XAP大小会大幅增加.在我的有限测试中,将"Copy local"设置为false似乎并没有破坏任何东西.为什么Visual Studio将这些文件添加到bin路径?由于用户已经拥有Silverlight,我可以假设这些程序集已经安装在每个用户的GAC中,或者我错过了什么?

.net silverlight copy-local visual-studio

6
推荐指数
1
解决办法
1475
查看次数

复制 local = false 文件未找到异常问题

您好,我知道有人问过这个问题,但没有得到答案。\n当我想使用安装在 C:\\Program files (x86)\\Dummu_API.dll 上的 dll 时遇到问题

\n\n

当我运行我的应用程序时,它抛出异常:

\n\n
\n

无法加载文件或程序集“Dummy_API,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null\”或其依赖项之一。该系统找不到指定的文件。

\n
\n\n

我的项目的引用为 Copy Local = false 和特定版本 = false。我的项目也是 x86 平台目标。

\n\n

我不知道为什么我的应用程序找不到程序集。知道发生了什么吗?

\n

.net c# reference filenotfoundexception copy-local

3
推荐指数
1
解决办法
3886
查看次数

Microsoft.Owin.Host.HttpListener 没有被复制到引用项目的构建输出

我正在从同一解决方案中的另一个项目引用 Visual Studio 解决方案中的一个项目。被引用的项目(项目 B)具有 Microsoft.Owin.Host.HttpListener nuget 包,因此其中引用了 .dll。正在构建引用项目 B(项目 A)的项目。输出文件夹获取项目 B 中引用的所有 dll,但 Microsoft.Owin.Host.HttpListener.dll 除外,即使它被标记为 Copy Local - true。

Microsoft.Owin.Host.HttpListener.dll 是迄今为止我遇到的唯一一个拒绝将其作为 MSBuild 的 _CopyFilesMarkedCopyLocal 步骤的一部分复制到项目 A 的构建输出,而不管设置如何。

我试图将它添加到 app.config 中的条目中,但没有帮助。

我已经安排了展示引用问题的示例项目并将其上传到 GitHub here

您可以随意设置。

在问这个问题之前,我已经查看了 Stackoverflow 中的相关问题,但没有回答或不相关。

请给我一个提示,如何按预期将 .HttpListener.dll 与其他 .dll 一起复制到引用项目输出。

reference self-hosting copy-local visual-studio owin

1
推荐指数
1
解决办法
542
查看次数