我一直在使用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包.
我有一个WPF应用程序,我需要可视化y = y(x1,x2),其中x1,x2是线性坐标.我可以使用Oxyplot中的HeatMapSeries来做到这一点,但是当我想在同一个窗口中绘制两组数据时,热图不是合适的工具.一些轮廓系列会更好.现在,我尝试以与HeatMapSeries相同的方式实现这一点,这非常有效:
public void PlotHeatMap (){
OxyPlot.PlotModel model = new PlotModel { Title = "2-D data" };
model.Axes.Add( new OxyPlot.Axes.LinearColorAxis {
Position = OxyPlot.Axes.AxisPosition.Right,
Palette = OxyPalettes.Jet( 500 ),
HighColor = OxyColors.Gray,
LowColor = OxyColors.Black } );
OxyPlot.Series.HeatMapSeries heatmap = new OxyPlot.Series.HeatMapSeries {
Data = ( Double[ , ] )data,
X0 = x1min,
X1 = x1max,
Y0 = x2min,
Y1 = x2max
};
model.Series.Add( heatmap );
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用ContourSeries时,我只需用ContourSeries替换HeatMapSeries:
public void PlotContour (){
OxyPlot.PlotModel model = new PlotModel { Title …Run Code Online (Sandbox Code Playgroud) 我想异步运行某些对象的初始化,但是某些对象依赖于其他对象的初始化.然后在我的应用程序的其余部分继续之前,需要初始化所有对象.
是否可以在一个任务上调用Wait(),然后再次调用Wait(),或者在我的示例中包含WaitAll()的集合中包含它?
Dictionary<String, Task> taskdict = new Dictionary<String, Task>( );
taskdict.Add( "Task1",
Task.Factory.StartNew( ( ) => {
//Do stuff
} ) );
taskdict.Add( "Task2",
Task.Factory.StartNew( ( ) => {
taskdict[ "Task1" ].Wait( );
//Do stuff
} ) );
try {
Task.WaitAll( taskdict.Values.Convert<Task[ ]>( ) );
}
Run Code Online (Sandbox Code Playgroud)
或者第二个Wait()/ WaitAll()会失败吗?