Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 为什么';t Visual Studio 2012还记得我的';复制本地';偏好?_.net_Visual Studio 2012_Reference_C++ Cli_Assemblies - Fatal编程技术网

.net 为什么';t Visual Studio 2012还记得我的';复制本地';偏好?

.net 为什么';t Visual Studio 2012还记得我的';复制本地';偏好?,.net,visual-studio-2012,reference,c++-cli,assemblies,.net,Visual Studio 2012,Reference,C++ Cli,Assemblies,我有一个包含各种引用的应用程序,我从VisualStudio2008升级到了VisualStudio2010。在该应用程序中,在某些情况下,各种引用将Copy Local设置为false,以防止VS生成数百条“对象已定义”错误消息 这一切在VisualStudio2008中运行良好,但升级到2012年后,我们似乎无法再更改这些属性。例如,我有一个程序集,我想禁用该程序集上的“复制本地”,但当我将其更改为False并单击“应用”时,设置将恢复为True 我错过了什么?VS 2012中是否有一个新的

我有一个包含各种引用的应用程序,我从VisualStudio2008升级到了VisualStudio2010。在该应用程序中,在某些情况下,各种引用将Copy Local设置为false,以防止VS生成数百条“对象已定义”错误消息

这一切在VisualStudio2008中运行良好,但升级到2012年后,我们似乎无法再更改这些属性。例如,我有一个程序集,我想禁用该程序集上的“复制本地”,但当我将其更改为False并单击“应用”时,设置将恢复为True

我错过了什么?VS 2012中是否有一个新的设置取代了该选项,或者出现了其他问题

编辑-无论使用“复制本地”,似乎都存在一些奇怪的行为。要复制该问题,请启动一个新的控制台项目,添加一个类库并从控制台项目引用它。控制台项目设置显示以下内容:

…但项目文件没有说明任何内容,即:

但是,未设置任何内容时的行为是它复制本地:

将项目中的CopyLocal从
false
切换到
true
并保存项目文件后,它现在包含:

…但GUI总是说错误


我刚刚在上提出了这个错误

各种引用将“复制本地”设置为false

这不可能是正确的,您所说的设置是错误的。“复制本地”在编译过程中不起任何作用。它只是确保程序集被复制到构建目录,以便您可以调试程序。对于存储在GAC或项目引用中的程序集,它只应为False。对于任何其他程序集,都需要将其设置为True,否则无法运行程序

您一定在谈论另一种设置,在VS2008中,“在构建中使用”和“在构建中使用依赖项”与您的问题相关。这与VS2012不同,VS2012是VS2010构建大修的一部分

当你违反C++中的一个定义规则时,你会得到“编译”的编译错误。这在C++/CLI中相当容易做到,因为它提供了两种导入定义的方法。首选的方法是通过程序集引用,编译器从元数据导入所有公共引用类。如果您还以传统方式通过.h文件导入ODR,则违反了ODR。您应该非常喜欢程序集引用,类的声明不能与定义不同步。并且在最终的程序中不会得到重复的代码。InvalidCastException也是一个很难排除的令人讨厌的来源,一个程序集中的类与另一个程序集中的类不同,即使它们具有相同的命名空间和类名。NET中的一个强大DLL


VS2008设置不再可用,您现在只有“参考部件输出”。通常设置为True,以便编译器以首选方式在元数据中导入定义。

谢谢。和以往一样,您是正确的,但这并不能解释为什么GUI不记得设置。我们在“复制本地”选项中观察到的bug(正如您所说,它确实是要更改的错误bug)似乎不是问题的根源。从我们看到的情况来看,在项目文件中,“CopyLocal”似乎已被“Private”XML标记替换。更改“CopyLocal”设置会更改XML文件,但不会影响Visual Studio GUI中的项目设置。