我一直在使用NuGet从外部和内部包源中检索包,这非常方便.但我已经意识到默认情况下每个解决方案都存储了这些包,当一些具有NuGet引用的项目包含在多个解决方案中时,这非常令人沮丧.然后将引用更改为其他解决方案包文件夹,这可能实际上对另一个开发人员或构建计算机不可用.
我已经看到有一些方法可以指出一个公共的包位置(可能在项目根级别,我们正在使用TFS源代码控制)和NuGet的2.1 版本,请参阅发行说明.我正在使用NuGet v2.7
但我试图添加nuget.config文件,但没有看到任何影响.包仍存储在解决方案文件夹中.有什么我错过了吗?似乎有不同的xml节点结构要添加到nuget.config文件中,具体取决于谁回答了这个问题:Schwarzie建议另一个Stackoverflow线程:
<settings>
<repositoryPath>..\..\[relative or absolute path]</repositoryPath>
</settings>
Run Code Online (Sandbox Code Playgroud)
NuGet 2.1的发行说明(见上面的链接)表明了这种格式:
<configuration>
<config>
<add key="repositoryPath" value="..\..\[relative or absolute path]" />
</config>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我不知道其中哪一个,或任何一个,或两者最终都会起作用.我在解决方案级别尝试了两种方法.nuget.config文件可以放在TFS项目根级别上,还是必须放在解决方案目录中?似乎NuGet以某种顺序从这些文件中读取和应用设置,为什么将它们添加到多个级别是有意义的,其中解决方案级别上的nuget.config文件将覆盖TFS项目根级别上的一个.这可以澄清吗?
在这些引用工作之前,是否需要删除所有已安装的软件包?我很乐意,如果有人可以提供逐步说明,从特定于解决方案的nuget使用转移到一个公共包文件夹,其中属于多个解决方案的项目可以找到他们所需的nuget包.
我能够使用MSBuild.exe构建一个解决方案,但我的问题是我只能设法让它在DEBUG模式下构建.我需要使用MSBUILD在Release模式下构建我的解决方案.
这是我尝试过的
Process msbuild = Process.Start("C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MsBuild.exe", solutionfilepath + " /P:Config=Release");
Run Code Online (Sandbox Code Playgroud)
和
Process msbuild = Process.Start("C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\MsBuild.exe", solutionfilepath + " /P:Configuration=Release");
Run Code Online (Sandbox Code Playgroud) 尝试在VS 2013中明确打开VS 2012解决方案(SLN文件)成功.只需在Windows资源管理器中双击它,仍然可以在VS 2012中打开它.
我读过" Visual Studio 2012没有转换vs2010解决方案? "并按照"另存为..."的解决方案文件的建议.
它仍默认在VS 2012中打开.
我的问题:
如何更改SLN文件以强制在Visual Studio 2013中打开它?
作为VS的新手,我怎么能想到这两个概念,有什么区别?
projects-and-solutions solution visual-studio-project visual-studio
我在Visual Studio 2012中有一个解决方案,其中包含170个C#项目.我需要将.NET Framework 4.0中的所有项目重新定位到4.5.2.
我更喜欢让Visual Studio通过进入每个项目的属性,更改目标框架,并让Visual Studio对.csproj文件进行必要的更改来处理这个问题.
我注意到这些更改包括向.csproj添加一些新的XML标记,具体取决于当前项目的某些属性.
如何批量重新定位所有170个C#项目而不使用替换文本工具来替换目标版本号?我希望Visual Studio能够进行所有必要的标签修改和添加,并且单独更换将不允许这种情况发生.
我们的项目以主解决方案(包含每个项目)和多个包含相关项目分组的小型解决方案进行组织.
我想在每个解决方案中共享相同的Resharper设置,确保开发人员不需要在Resharper中导入配置文件或手动执行任何操作.我们使用的版本是最新版本之一,7.0.1.在TFS中签入的DotSettings文件在单个解决方案中运行良好,但为20-30个解决方案复制相同的文件是禁忌.
有没有办法与整个团队中的每个项目/解决方案共享相同的配置,而开发人员无需明确配置它?理想情况下,应该可以为每个解决方案更改.DotSettings文件的路径,以便在编辑单个.DotSettings文件时,它会自动影响团队中的每个解决方案.
更新:
我已经搜索了一下这个并尝试了两种不同的方法,但它们都没有100%工作:
我在这里没有选择.
更新2:
Daniel Hilgarth提出的解决方案非常有效,但只有在Resharper更新时才能使用.在7.1版本中更正了导致.DotSettings文件在每台计算机上自动签出和编辑的错误.我在更新软件之前和之后对此进行了测试,现在它按预期工作.
有关该错误的更多信息,请访问:
我用vs2012打开了我的vs2010解决方案,但从2008年到2010年它没有进行任何转换.所以我的解决方案仍然与10标签相同.当我制作新的解决方案时,它上面有11个标签.我没有遇到任何问题,但我很好奇.有什么区别吗?如果是的话,如何转换成vs2012解决方案?
我有一个vs 2008解决方案,我想在解决方案中包含一个真正的文件夹,但不是在项目级别,而是在解决方案级别.
我注意到你可以右键单击解决方案并添加一个解决方案文件夹,但它出现在一些白色文件夹中,我怀疑它到底应该是什么...
基本上在文件系统上我有c:\ mySolution\myFolder ....
我想将myFolder添加到解决方案中,以便项目也受源代码控制...
项目A引用项目B,项目B引用外部DDL(使用NuGet恢复).DLL应该被复制到 Project A的bin文件夹(以及 Project B的DLL):
在我的例子中,当运行项目A时,我得到以下异常抛出:
无法加载文件或程序集'PostSharp,Version = 3.2.18.0,Culture = neutral,PublicKeyToken = b13fd38b8f9c99d7'或其依赖项之一.该系统找不到指定的文件.
DLL未被复制到项目A的bin中.来自Project B的所有其他外部引用都被正确复制,这对我来说很困惑.
Copy Local
对于所涉及的所有引用,都设置为true.例:
我该怎么做呢?
注意:使用Visual Studio 2013.
如何防止VS项目中解决方案文件夹的名称附加到为添加到解决方案文件夹的新项目生成的命名空间?
示例:VS解决方案中的C#项目在C#项目属性中设置的默认命名空间:"BigClient.Domain"
如果您在此项目中创建名为"MySpecialStuff"的解决方案文件夹,然后将新类添加到"MySpecialStuff"解决方案文件夹中,则VS将创建具有"BigClient.Domain.MySpecialStuff"命名空间的新.cs文件.我想找到一个允许新添加的类的命名空间仅保留"BigClient.Domain"的"项目级"命名空间而不是VS将"MySpecialStuff"解决方案文件夹名称附加到命名空间的方法.
我似乎记得有人读过一篇博客文章,这是可能的(通过VS中的选项/设置或注册表设置),但我不记得现在我想要它在哪里或如何:)
我的平台是VS 2008,如果对于不同的VS版本,答案=不同.